Wahrscheinlich, weil für beide Seiten (B und C) nur der Typ relevant ist, nicht die Implementierung. In Ihrem Beispiel
public class A<B extends C>{}
B kann auch eine Schnittstelle sein. "extends" wird verwendet, um Unterschnittstellen und Unterklassen zu definieren.
interface IntfSub extends IntfSuper {}
class ClzSub extends ClzSuper {}
Normalerweise denke ich bei 'Sub extends Super' an ' Unter ist wie Super , aber mit zusätzlichen Fähigkeiten', und 'Clz implementiert Intf' als ' Clz ist eine Realisierung von Intf '. In Ihrem Beispiel würde dies passen: B ist wie C , jedoch mit zusätzlichen Funktionen. Die Fähigkeiten sind hier relevant, nicht die Umsetzung.