Type de retour Covariant en Java

Le code suivant utilise le concept de substitution de méthode en Java.

package pkg; import java.util.ArrayList; import java.util.List; abstract class SuperClass { abstract public ListgetList(); } final class SubClass extends SuperClass { private Listlist=null; @Override public ArrayList getList() { list=new ArrayList(); list.add("A"); list.add("B"); return (ArrayList) list; } } final public class Main { public static void main(Ssortingng[] args) { SuperClass s=new SubClass(); Listlist=s.getList(); for(Ssortingng str:list) { System.out.println(str); } } } 

Par convention, le remplacement de méthode utilise la même signature (avec le type de retour) à la fois en super classe et en sous-classe. Dans le code ci-dessus, le type de retour de la méthode getList() dans la SuperClass est List et dans sa sous-classe, le type de retour est ArrayList . Comment fonctionne la méthode prioritaire ici?

À propos, il est évident que ArrayList est une implémentation de l’interface List , mais comment le compilateur traite-t-il le type de retour ici tout en surchargeant la méthode getList() ?

Devrais-je croire quelque chose comme ceci … Le type de retour de la méthode substituée est autorisé à être un sous-type du type de retour de la méthode substituée.