Zugriff auf die super-Klasse-Funktion mit Unterklasse-Objekt
Habe ich ein Objekt einer Unterklasse Erweiterung Ihrer Oberklasse. Es ist eine überschriebene Methode in der Unterklasse, die aufgerufen werden kann über das Objekt.
Ist das möglich, rufen Sie die Oberklasse der Funktion mit Hilfe der Unterklasse-Objekt?
package supercall;
public class Main {
public static void main(String[] args) {
SomeClass obj = new SubClass();
obj.go(); //is there anything like, obj.super.go()?
}
}
class SomeClass {
SomeClass() {
}
public void go() {
System.out.println("Someclass go");
}
}
class SubClass extends SomeClass {
SubClass() {
}
@Override
public void go() {
System.out.println("Subclass go");
}
}
Betrachten Sie den obigen code.
Hier druckt er
Unterklasse gehen
. Statt dessen habe ich drucken
Oberklasse gehen
.
InformationsquelleAutor bdhar | 2010-03-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, es ist nicht möglich, und wenn Sie denken, Sie brauchen es, überdenken Sie Ihre design. Der ganze Punkt überschreiben einer Methode ist zu ersetzen durch seine Funktionalität. Wenn eine andere Klasse weiß, dass viel über die Klasse der internen Abläufe, Sie vollständig zu töten Kapselung.
InformationsquelleAutor Michael Borgwardt
Hier druckt er
Unterklasse gehen
. Statt dessen habe ich print
Oberklasse gehen
Okay, dann nicht überschreiben die Methode " go @ Unterklasse aufrufen Superklasse Umsetzung.
Wenn Sie ausführen möchten, super Umsetzung, und haben einige weitere code @ Unterklasse, rufen Sie super.go(); und dann führen Sie einige andere Aussagen.
Ist es ok, da Sie die Wiederverwendung von bereits geschriebenem code, sollten Sie sich nicht kopieren und einfügen von code aus Oberklasse und steckte es in die subs, da es code-Duplizierung. Aber wenn es Ihr Ziel ist, um Verhalten zu ändern, vollständig, dann rufen Sie nicht super
InformationsquelleAutor EEE
Statt:
Schreiben
(Oder, wissen Sie, nur nicht implementieren, Methode ...).
Ohh Mann... ich habe nur geschrieben, dass die Antwort(nicht gebucht)... Scheiße!!!
Ja, Sie können einfach anrufen
super
. Aber Sie brauchen, um machen, dass der Aufruf von im der Klasse. Es kann nicht extern erstellt werden.Könnten Sie bitte ein Beispiel für das, was u erwähnt im oben genannten thread-- "Sie müssen diesen Aufruf aus der Klasse. Es kann nicht getan werden extern"
InformationsquelleAutor Noon Silk
Gibt es eine Möglichkeit, dies zu erreichen? Nein, gibt es nicht.
Zur Laufzeit der JVM Holen, die Methoden zu nennen, auf der Basis der instance-Typ an (das ist Polymorphismus für Sie), nicht auf die Art in der Sie deklariert ist.
Ihre Instanz einer Unterklasse-Instanz, so dass die go () - Methode in der Unterklasse aufgerufen werden.
InformationsquelleAutor
Ein Weg wäre, um die Unterklasse call teh super-Klassen-Implementierung. Aber ich gehe davon aus, das ist nicht das, was Sie wollen?
InformationsquelleAutor Steve