Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich möchte folgendes machen (bzw. wissen wie das geht): Eine Methode einer Oberklasse wird in einer Unterklasse überschrieben. Nun möchte ich an einem Unterklasse-Objekt die verdeckte Methode der Oberklasse aufrufen, allerdings nicht in der Klassendefinition der Unterklasse. Wie geht das?
public class Oberklasse{
public void methode(){
System.out.println("Oberklasse");
}
}
public class Unterklasse extends Oberklasse{
public void methode(){
System.out.println("Unterklasse");
}
}
public class TestKlasse{
public static void main(String[] args){
Unterklasse unterklasse= new Unterklasse();
//hier möchte ich die Methode der Oberklasse aufrufen. Wie geht es?
}
Ja, der Link beschreibt den Aufruf einer verdeckten Methode in der Klassendefinition der Unterklasse (mit super.verdeckteMethode). Aber wie geht es außerhalb der Klassendefinition der Unterklasse?
Ist für eine Aufgabe, d.h. ist ohne praktische Relevanz. Wenn ich drüber nachdenke, wann man das gebrauchen könnte, fällt mir folgendes ein (weiß jetzt nicht ob das sinn hat): Einer Methode werden Objekte vom Typ der Oberklase übergeben, an denen eine Methode (die, die überschrieben wird) aufgerufen wird. Je nachdem welches konkretes Objekt übergeben wird eine andere Methode aufgerufen. In bestimmten fällen soll aber die Standard-Methode der Oberklasse aufgerufen werden, da in diesen bestimmten fällen alle Objekte gleich behandelt werden sollen. . Reichlich konstruiert, und vielleicht auch nicht sinnvoll. wenn es nicht geht bin ich ja zufrieden. danke.
Ist für eine Aufgabe, d.h. ist ohne praktische Relevanz. Wenn ich drüber nachdenke, wann man das gebrauchen könnte, fällt mir folgendes ein (weiß jetzt nicht ob das sinn hat): Einer Methode werden Objekte vom Typ der Oberklase übergeben, an denen eine Methode (die, die überschrieben wird) aufgerufen wird. Je nachdem welches konkretes Objekt übergeben wird eine andere Methode aufgerufen. In bestimmten fällen soll aber die Standard-Methode der Oberklasse aufgerufen werden, da in diesen bestimmten fällen alle Objekte gleich behandelt werden sollen. . Reichlich konstruiert, und vielleicht auch nicht sinnvoll. wenn es nicht geht bin ich ja zufrieden. danke.
Das hört sich nach von hinten durch die Brust ins Auge an und macht mit Sicherheit so keinen Sinn.
Warum das auch nicht geht, ist an folgendem Mini-Beispiel sichtbar:
Code:
class A {
public void doSomething() { .. }
}
class B extens A {
public void doSomething() { .. }
}
class C extens B {
public void doSomething() { .. }
}
3 Klassen, die jeweils alle die Methode doSomething überschreiben.
Nun folgender Code:
Code:
B b = new C();
b.doSomething(); // Ruft die Methode von C auf, da es ein C-Objekt ist
b.super.doSomething(); // Welche Methode soll das aufrufen?