2017-08-18 2 views
-6

Pourquoi ne puis-je pas accéder à la variable de la classe parent avec le super mot clé?Portée et utilisation du super mot clé en Java

Avec le code ci-dessous, la sortie est:

feline cougar c c 
class Feline { 
    public String type = "f "; 

    public Feline() { 
     System.out.print("feline "); 
    } 
} 

public class Cougar extends Feline { 
    public Cougar() { 
     System.out.print("cougar "); 

    } 

    void go() { 
     type = "c "; 
     System.out.print(this.type + super.type); 
    } 

    public static void main(String[] args) { 
     new Cougar().go(); 
    } 
} 
+1

Vous * accédez * à la variable de classe parente. Celui que vous venez de mettre à '" c "'. – shmosel

+0

Je pensais qu'il devrait être accessible à partir de la classe félin –

+1

Il n'y a qu'une seule variable, et il ne peut avoir qu'une seule valeur. Cette valeur était '' f ''jusqu'à ce que vous la changiez en' 'c' '. – shmosel

Répondre

1

La réponse à la question initiale est simple: Il n'y a qu'une seule variable type dit. Sa valeur initiale est écrasée par c. Rappelez-vous qu'il n'y a qu'un seul objet, donc une variable. Le code de Prashant crée une deuxième variable et évidemment que l'on n'écrase pas la chaîne d'origine dans la classe parente.