In Java, wie rufe ich eine Methode der Basisklasse aus der übergeordneten Methode in einer abgeleiteten Klasse?

StackOverflow https://stackoverflow.com/questions/268929

Frage

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

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

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

Ich möchte die A.myMethod() von B.myMethod() nennen. Ich komme aus dem C ++ Welt , und ich weiß nicht, wie diese grundlegende Sache in Java zu tun.

War es hilfreich?

Lösung

Das Schlüsselwort Sie suchen ist super. Siehe diese Anleitung , zum Beispiel.

Andere Tipps

Just es nennen Super verwenden.

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

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.

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

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

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

Ich bin mir ziemlich sicher, dass Sie es Java Reflection-Mechanismus zu tun. Es ist nicht so einfach, wie mit Super aber es gibt Ihnen mehr Macht.

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

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

nennen super.myMethod ();

Mit dem Super Stichwort.

super.baseMethod(params);

rufen Sie die Basismethoden mit Super Keywords und die entsprechenden params übergeben.

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);
    }
}

Sehen Sie, hier sind Sie überschreiben eine der Methode der Basisklasse also, wenn Sie mögen von vererbten Klasse Basisklasse Methode aufrufen, dann müssen Sie mit Super Stichwort in der gleichen Methode der vererbten Klasse.

Wenn u r diese Methoden für die Initialisierung verwendet dann Konstruktoren der Klasse A verwenden und Super Schlüsselwort innerhalb des Konstruktors der Klasse B übergeben.

Oder wenn Sie eine Methode der Superklasse von der Unterklasse Methode aufrufen wollen, dann müssen Sie Schlüsselwort super in der Unterklasse Methode verwenden, wie: super.myMethod ();

// 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);
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top