2008-11-06 14 views

Répondre

119

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

+3

On dirait en C++ que vous pouvez appeler une méthode ancêtre spécifique, mais pas java, vous pouvez simplement passer la chaîne ... – rogerdpack

6

appel super.myMethod();

111

Il suffit de l'appeler en utilisant super.

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

Utilisez le mot-clé super.

14

super.MyMethod() doit être appelée à l'intérieur du MyMethod() du class B. Il doit donc être comme suit

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

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

appeler les méthodes de base avec mot-clé super et passer les params respectifs.

15

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

Je suis assez 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 puissance.

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

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

Cela ne montre pas de réflexion java dans le code et est le même code que les autres . Y a-t-il plus à la réponse? –

1

Si ur l'utilisation de ces méthodes pour l'initialisation puis utilisez les constructeurs de classe A et passer mot-clé super dans le constructeur de la classe B.

Ou si vous voulez appeler une méthode de super classe à partir de la méthode de la sous-classe alors vous devez utiliser super mot-clé dans la méthode de la sous-classe comme: super.myMethod();

3

Voir, ici vous surchargez une des méthodes de la classe de base donc si vous voulez appeler la méthode de classe de base de la classe héritée, vous devez utiliser mot-clé super dans la même méthode de la classe héritée.