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 implements B {}
If you don't and you simply have to implements B with a C type :
public class A implements B {}
For the second part, once you've defined I you can use it as is in your other generic types :
public abstract class M extends R implements Q {}