le code ci-dessous Tenir compte:Comment pouvons-nous appeler des méthodes substituées dans une classe anonyme java?
abstract class AbstractClass {
abstract m1();
}
public class Test {
public static void main(String [] args) {
AbstractClass obj = new AbstractClass() {
@Override void m1() {
System.out.print("Instance of abstract class !");
}
};
obj.m1();
}
}
Maintenant, voici ce que je ne comprenais pas sur ce code.
J'ai lu que la classe anonyme crée la classe avec un nom inconnu qui étend la classe dont la référence est fournie (ici, elle est abstraite AbstractClass).
Aussi je me souviens que nous ne pouvons pas implémenter la méthode de la classe enfant si l'objet a la référence de la classe parente.
voir bloc de code ci-dessous
Parent obj = new Child();
obj.methodOfParent();
obj.methodOfChild(); //this gives error
Maintenant, voici mon point si Anonyme Classe étend sa classe parent dont la référence est fournie, alors comment peut-on appeler des méthodes outrepassée de la classe mère de Anonyme Classe ?
Cela n'est pas très clair - demandez-vous pourquoi il est possible de faire 'obj.m1()'? –
Oui, @Oliver Charlesworth –
Ceci est une question incroyablement peu claire. Mais une chose qui devrait être soulignée est que 'Parent obj = new Child(); obj.methodOfParent(); 'appellera le paramètre methodOfParent de votre classe Child (qu'il hérite du parent ou remplace et fournit une nouvelle implémentation). –