I am trying to write something like
public class A implements B {}
and
public abstract class M
When you have interfaces in generics, you still have to use the extends keyword.
In your case, if you know what T will be :
public class A<T extends C> implements B<T> {}
If you don't and you simply have to implements B with a C type :
public class A implements B<C> {}
For the second part, once you've defined I you can use it as is in your other generic types :
public abstract class M<I extends P> extends R<I> implements Q<I> {}
There is no implements keyword in generic bounds. It's only extends
Furthermore - you should specify the type parameter only in the class definition, and not in supertypes. I.e.
public class A<T extends C> implements B<T> {}