Wie rufe ich in Java die Methode einer Basisklasse von der überschreibenden Methode in einer abgeleiteten Klasse auf?

136

Ich habe zwei Java-Klassen: B, die eine andere Klasse A wie folgt erweitert:

class A {
    public void myMethod() { /* ... */ }
}

class B extends A {
    public void myMethod() { /* Another code */ }
}

Ich möchte das A.myMethod()von anrufen B.myMethod(). Ich komme aus der C ++ - Welt und weiß nicht, wie ich diese grundlegende Sache in Java machen soll.

Creasixtine
quelle

Antworten:

145

Das gesuchte Schlüsselwort ist super. Siehe zum Beispiel diese Anleitung .

entspannen
quelle
4
Sieht so aus, als ob Sie in C ++ eine bestimmte Vorfahrenmethode aufrufen können, aber nicht Java. Sie können sie einfach an die Kette weitergeben ...
Rogerdpack
131

Nennen Sie es einfach mit super.

public void myMethod()
{
    // B stuff
    super.myMethod();
    // B stuff
}
Robin
quelle
21

Die Antwort lautet wie folgt:

super.Mymethod();
super();                // calls base class Superclass constructor.
super(parameter list);          // calls base class parameterized constructor.
super.method();         // calls base class method.
Yograj kingaonkar
quelle
20

super.MyMethod()sollte innerhalb MyMethod()der genannt werden class B. So sollte es sein

class A {
    public void myMethod() { /* ... */ }
}

class B extends A {
    public void myMethod() { 
        super.MyMethod();
        /* Another code */ 
    }
}
Kasun Siyambalapitiya
quelle
8

call super.myMethod ();

Elie
quelle
7

Ich bin mir ziemlich sicher, dass Sie dies mit dem Java Reflection-Mechanismus tun können. Es ist nicht so einfach wie die Verwendung von Super, aber es gibt Ihnen mehr Leistung.

class A
{
    public void myMethod()
    { /* ... */ }
}

class B extends A
{
    public void myMethod()
    {
        super.myMethod(); // calling parent method
    }
}
Khaled A Khunaifer
quelle
Dies zeigt keine Java-Reflexion im Code und ist der gleiche Code wie die anderen. Gibt es mehr zu der Antwort?
Nelda.techspiress
4

Verwenden Sie das Super- Schlüsselwort.

Steve K.
quelle
3
super.baseMethod(params);

Rufen Sie die Basismethoden mit dem Schlüsselwort super auf und übergeben Sie die entsprechenden Parameter.

kinshuk4
quelle
3
class test
{
    void message()
    {
        System.out.println("super class");
    }
}

class demo extends test
{
    int z;
    demo(int y)
    {
        super.message();
        z=y;
        System.out.println("re:"+z);
    }
}
class free{
    public static void main(String ar[]){
        demo d=new demo(6);
    }
}
Umanathan
quelle
3

Sehen Sie, hier überschreiben Sie eine der Methoden der Basisklasse. Wenn Sie also die Basisklassenmethode von der geerbten Klasse aufrufen möchten, müssen Sie das Schlüsselwort super in derselben Methode der geerbten Klasse verwenden.

Rahul Yadav
quelle
1

Wenn Sie diese Methoden zur Initialisierung verwenden, verwenden Sie Konstruktoren der Klasse A und übergeben Sie das Super-Schlüsselwort im Konstruktor der Klasse B.

Oder wenn Sie eine Methode der Superklasse aus der Unterklassenmethode aufrufen möchten, müssen Sie das Schlüsselwort super in der Unterklassenmethode verwenden, wie: super.myMethod ();

aschiges Rawat
quelle
1
// Using super keyword access parent class variable
class test {
    int is,xs;

    test(int i,int x) {
        is=i;
        xs=x;
        System.out.println("super class:");
    }
}

class demo extends test {
    int z;

    demo(int i,int x,int y) {
        super(i,x);
        z=y;
        System.out.println("re:"+is);
        System.out.println("re:"+xs);
        System.out.println("re:"+z);
    }
}

class free{
    public static void main(String ar[]){
        demo d=new demo(4,5,6);
    }
}
Umanathan
quelle