2017-03-22 8 views
0

Ich habe die folgende Klassenstruktur:Java - Wie überschreibt man eine Großvater-Klasse-Methode?

Abstract Class A 
Class B_A extends A 

Abstract Class C_A extends A 

Class D_CA extends CA 
Class E_CA extends CA 

Klasse A einen Methodennamen implementiert do().

Ich möchte, dass Klassen B_A und D_CA wird das Verfahren do() von der Basisklasse verwenden A aber die ich brauche E_CA Klasse es außer Kraft zu setzen und do() anders zu implementieren.

Wie kann ich das erreichen?

Danke!

+0

Was haben Sie versucht und wo ist das Problem? – UnholySheep

+1

Mögliches Duplikat von [Wie überschreibe ich eine Methode in einer Unterklasse?] (Http://stackoverflow.com/questions/5215612/how-do-ioverride-a-method-in-a-subclass) – Tom

+0

was ist Klasse CA –

Antwort

0

Sie können die Methode do() in class E_CA einfach überschreiben.

Dies führt dazu, dass jede Klasse, die von E_CA erbt, die Implementierung in E_CA verwendet (es sei denn, sie wird erneut überschrieben). Jede andere Klasse wird die Umsetzung der do() in A

class E_CA extends CA { 
    @Override 
    public void do() { 
     // new implementation 
    } 
} 
0

Danke alle Jungen für Ihre Zeit. Ich wusste, dass ich @override für die Unterklasse verwenden musste. Aber ich hatte einen Fehler und es hat mich verrückt gemacht. Das Problem war, dass die Basisklassenmethode als privat definiert wurde und die Enkelmethode geschützt wurde. Daher "schrie" es auf die Unterklassenmethode. Ändern der beiden Implementierungen zu geschützt mein Problem behoben. Danke nochmal.

+1

Dann ziehen Sie in Betracht, Ihre Frage zu löschen. Es war nicht gerade toll, nicht wahr ;-) – GhostCat

+0

@GhostCat vielleicht ... aber da es bereits Antworten gibt, kann ich nicht ... – dushkin

+1

Ich denke, es gibt eine Warnung, dass Sie * sollten * tun es nicht; aber das Löschen einer Frage mit 0/negativ bewerteten Antworten sollte möglich sein; und ist auch eine gültige Maßnahme, um dies zu tun. – GhostCat

Verwandte Themen