2016-10-12 22 views
1

Ich habe zwei Klassen Parent und Child.From Child Klasse Ich rufe Eltern overriden Methode (show) .From Eltern-Klasse, rufe ich eine andere Methode (Anzeige), aber diese Methode wird auch aufgrund überschrieben zu welcher Child-Methode aufgerufen wird. Ich möchte die Anzeige der übergeordneten Methode von der show-Methode aufrufen.So rufen Sie Parent überschreiben Methode

public class Parent { 


    public void show() 
    { 
     System.out.println("Show of parent "); 
     this.display(); 
    } 

    public void display() 
    { 
     System.out.println("Display of parent"); 
    } 

} 

public class Child extends Parent{ 

    public void show() 
    { 
     System.out.println("Show of child "); 
     super.show(); 
    } 

    public void display() 
    { 
     System.out.println("Display of child"); 
    } 

    public static void main(String[] args) { 
     Parent obj = new Child(); 
     obj.show(); 
    } 


} 

Ausgang:

Show of child 
Show of parent 
Display of child 

Notwendigkeit:

Show of child 
Show of parent 
Display of parent 

dh I display() Methode der Elternklasse von show() Methode der gleichen Klasse

+0

Sie haben es in der Show aber nicht im Display ... warum? Rufen Sie die super.display() von der Anzeige auf. – AxelH

+0

@AxelH Ich möchte display() -Methode der Elternklasse von show() -Methode der gleichen Klasse aufrufen – Kick

Antwort

2

Was stimmt nicht nennen wollen mit:

public void show() 
{ 
    System.out.println("Show of child "); 
    super.show(); 
    super.display(); 
} 

Und für die Aufnahme: Sie wollen wirklich wirklich wirklich @Override auf jeder und jede Methode setzen, die Sie überschreibt etwas denken. Es passiert viel zu oft, dass Sie nur annehmen, um etwas außer Kraft zu setzen, ohne es tatsächlich zu tun. @Override weist den Compiler an, Ihnen zu sagen, wenn Sie solche Fehler machen.

EDIT: und bitte beachten Sie - es scheint, dass Sie wollen, dass Show + Display in bestimmten Situationen "zusammen" genannt werden. Wenn ja: Setzen Sie nur eine Methode auf Ihre "Schnittstelle", nicht zwei! Was ich meine ist: Wenn die Idee dieser Methoden ist, nacheinander zu laufen, dann stelle einen sinnvollen Weg dar, dies zu tun.

Mit anderen Worten: gute Schnittstellen machen es leicht, die richtige Sache zu tun; und schwer, die falsche Sache zu tun. Da zwei Methoden vorhanden sind und erwartet wird, dass anderer Code sie nacheinander aufruft, wird das Gegenteil dieser Idee erreicht. Es macht es leicht, Dinge falsch zu machen; und schwieriger, die Dinge in Ordnung zu bringen!

Zum Schluss: Bereits die Namensgebung weist darauf hin, dass ein bestimmtes Designproblem vorliegt. Wie in: Was genau ist der Unterschied zwischen "Zeigen" und "Zeigen"?

+0

Ich möchte Display-Methode der Elternklasse von Show-Methode der gleichen Klasse aufrufen. – Kick

+0

Tx. Aber ich möchte Display-Methode von Eltern nur von Show-Methode der gleichen Klasse aufgerufen werden – Kick

+0

Ich muss zugeben: Ich bekomme Ihr Problem nicht. Mein Codebeispiel sollte die Ausgabe erstellen, nach der Sie gesucht haben. – GhostCat

Verwandte Themen