2011-03-07 9 views

Répondre

6

appel super

class A { 
    int foo() { return 2; } 
} 

class B extends A { 

    boolean someCondition; 

    public B(boolean b) { someCondition = b; } 

    int foo() { 
     if(someCondition) return super.foo(); 
     return 3; 
    } 
} 
+0

ne devrait pas utiliser la méthode foo() dans la classe A être statique afin que vous puissiez l'appeler comme: super.foo()? –

+3

@Eng Nope! statique signifie quelque chose de très différent. – corsiKa

6

C'est ce que super est pour. Si vous substituez la méthode method, vous pouvez le mettre en œuvre comme ceci:

protected void method() { 
    if (special_conditions()) { 
     super.method(); 
    } else { 
     // do your thing 
    } 
} 
2

Vous pouvez généralement utiliser le mot-clé super pour accéder la fonction de la classe parente. par exemple: [? En Java, comment j'appelle la méthode d'une classe de base de la méthode redéfinie dans une classe dérivée]

public class Subclass extends Superclass { 

    public void printMethod() { //overrides printMethod in Superclass 
     super.printMethod(); 
     System.out.println("Printed in Subclass"); 
    } 
    public static void main(String[] args) { 

    Subclass s = new Subclass(); 
    s.printMethod();  
    } 

} 

Taken de http://download.oracle.com/javase/tutorial/java/IandI/super.html

Questions connexes