access de classe interne à la méthode de classe externe, mêmes noms de méthode

j’ai eu une classe et une sous-classe

01 public class A{ 02 void test(){}; 03 public class B{ 04 void test(){ 05 test(); 06 } 07 } 08 } 

Ok, en ligne 05, j’aime bien accéder à la méthode test de la classe A. Mais je vais dans une boucle parce que je ne sais pas comment spécifier l’utilisation de la méthode de la classe A.

Des idées?

 01 public class A{ 02 void test(){}; 03 public class B{ 04 void test(){ 05 test(); // local B.test() method, so recursion, use A.this.test(); 06 } 07 } 08 } 

EDIT: Comme @Thilo l’a mentionné: Évitez d’utiliser les mêmes noms de méthodes dans les classes externes et internes, cela évitera les conflits de noms.

Vous pouvez faire quelque chose comme ça:

 public class A{ void test(){ System.out.println("Test from A"); }; public class B{ void test(){ System.out.println("Test from B"); A.this.test(); } } public static void main(Ssortingng[] args) { A a = new A(); B b = a.new B(); b.test(); } } 

Vous avez alors la sortie suivante:

 Test from B Test from A 

La classe B ne doit pas nécessairement être une classe nestede pour étendre la classe A en écriture.

 public class B extends A { ... } 

que vous pouvez appeler test () comme

 super.test() 

Si vous appelez test () comme vous le faites, c’est ce que nous appelons récursif.

Si vous le rendez statique, vous pouvez appeler

 A.test() 

Sinon, vous avez besoin d’une instance de A à utiliser dans B

 A a; a.test();