it-swarm.com.de

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

Ich habe zwei Java Klassen: B, die eine weitere Klasse A wie folgt erweitern:

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

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

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

130
Creasixtine

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

137
unwind

Nennen Sie es einfach mit super.

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

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.
20

super.MyMethod() sollte innerhalb von MyMethod() von class B aufgerufen werden. So sollte es sein wie folgt

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

class B extends A {
    public void myMethod() { 
        super.MyMethod();
        /* Another code */ 
    }
}
18
geeeeeeeeeek

Ich bin mir ziemlich sicher, dass Sie es mit dem Java Reflection-Mechanismus machen können. Es ist nicht so einfach wie mit Super, aber es gibt Ihnen mehr Power.

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

class B extends A
{
    public void myMethod()
    {
        super.myMethod(); // calling parent method
    }
}
8
Gracjan Nawrot

rufe super.myMethod () auf;

7
Elie

Verwenden Sie das Schlüsselwort super .

4
Steve K
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);
    }
}
3
umanathan

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

3
Rahul Yadav
super.baseMethod(params);

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

3
kinshuk4

Wenn Sie diese Methoden zur Initialisierung verwenden, verwenden Sie Konstruktoren der Klasse A und übergeben Sie das Schlüsselwort super 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 ();

1
ashish rawat
// 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);
    }
}
1
umanathan