Héritage et généricité | Java
Une classe générique peut agir comme une superclasse ou être une sous-classe. Dans une hiérarchie, tous les arguments type nécessaires à une superclasse générique doivent être transmis dans la hiérarchie par toutes les sous-classes.
Vous devez suivre certaines règles lors de la création d’une classe générique en tant que superclasse ou sous-classe.
1- Une classe générique peut hériter une classe non générique.
class NonGeneric { //Classe non générique } class Generic<T> extends NonGeneric { //Classe générique hérite une classe non générique }
2- Une classe générique peut également hériter une autre classe générique. Lorsqu’une classe générique hérite une autre classe générique, la sous-classe doit avoir au moins le même type et le même nombre de paramètres type.
class A<T> { //Superclasse générique avec un seul type } class B<T> extends A<T> { //Sous-classe avec le même type } class C<T, E> extends A<T> { //Sous-classe avec deux types } class D<K, V> extends A<T> { //Erreur de compilation, sous-classe ayant différents types }
3- Lorsqu’une classe générique hérite une autre classe générique, les types sont passés de la sous-classe à la super-classe comme dans le cas du chaînage de constructeur où le constructeur de la super-classe est appelé par le constructeur de la sous-classe en passant les arguments requis. Par exemple, dans le programme ci-dessous, « T » dans « A » sera remplacé par String.
class A<T> { T var; public A(T var) { this.var = var; } } class B<T> extends A<T> { public B(T var) { super(var); } } public class Main { public static void main(String[] args) { B<String> b = new B<String>("WayToLearnX"); System.out.println(b.var); } }