public class B extends C { }
What does this mean? That C needs to extend A? What extra restriction am I putting instead of just saying B ext
That doesn't mean anything, unless there are some methods defined in Class C or its ascendants, to either accept or return Type A parameters.
Class C
By doing so you are ensuring the Type safety by imposing restrictions saying "They can accept or return objects of Type A".