2017-10-02 7 views
-3

L'exécution de la classe de test donne une erreur Stackoverflow :(StackOverflowError lors de l'appel de la méthode de l'objet de la sous-classe?

classe parent:

package Pack; 

public class Alpha { 
    protected void sayHi() { 
    System.out.println("Hi...from Alpha"); 
    } 
} 

classe enfant:

import Pack.Alpha; 

public class AlphaSub extends Alpha { 
    AlphaSub sb=new AlphaSub() ; 

    void hi() { 
    sb.sayHi() ; 

    } 
} 

classe Test:

public class test { 
public static void main(String[] args) { 

    AlphaSub ob=new AlphaSub() ; 
    ob.hi() ; 
} 

}

+0

Avez-vous débogué? –

Répondre

2

Votre stackoverflow n'a rien à voir avec l'héritage, mais avec cette ligne (à l'intérieur AlphaSub):

AlphaSub sb=new AlphaSub() ; 

Vous créez une nouvelle instance AlphaSub l'intérieur de votre AlphaSub, ce qui provoque une boucle de endleess. Je suppose que vous ne parvenez même pas à la ligne ob.hi() dans votre test

+0

Je m'excuse de lier cela avec l'héritage. Je l'ai eu .. c'est dû à la création d'instance dans sa propre classe (sous-classe). –