web-dev-qa-db-fra.com

En Java, comment appeler une méthode de classe de base à partir de la méthode de substitution d'une classe dérivée?

J'ai deux Java classes: B, qui étend une autre classe A, comme suit:

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

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

Je voudrais appeler le A.myMethod() de B.myMethod(). Je viens du monde C++ , et je ne sais pas comment faire cette chose de base en Java.

130
Creasixtine

Le mot clé que vous recherchez est super. Voir ce guide , par exemple.

137
unwind

Appelez-le simplement avec super.

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

La réponse est la suivante:

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

super.MyMethod() doit être appelé à l'intérieur de MyMethod() du class B. Donc, il devrait être comme suit

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

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

Je suis presque sûr que vous pouvez le faire en utilisant Java mécanisme de réflexion. Ce n'est pas aussi simple que d'utiliser super, mais cela vous donne plus de pouvoir.

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

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

appelez super.myMethod ();

7
Elie

Utilisez le mot clé 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

Vous voyez, vous redéfinissez l’une des méthodes de la classe de base. Par conséquent, si vous souhaitez appeler une méthode de classe de base à partir d’une classe héritée, vous devez utiliser super mot-clé dans la même méthode que la classe héritée.

3
Rahul Yadav
super.baseMethod(params);

appelez les méthodes de base avec le mot clé super et transmettez les paramètres correspondants.

3
kinshuk4

Si vous utilisez ces méthodes pour l’initialisation, utilisez les constructeurs de la classe A et passez le mot-clé super à l’intérieur du constructeur de la classe B.

Ou si vous souhaitez appeler une méthode de super classe à partir de la méthode de la sous-classe, vous devez utiliser le mot-clé super à l'intérieur de la méthode de la sous-classe, comme: 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