2017-03-29 3 views
0

Da die Unterklasse auf die Variablen und Methoden der Superklasse zugreifen kann, die als protected definiert sind, warum gibt der folgende Code einen Kompilierungsfehler?Zugriff auf Superklassenvariablen/-methoden in Unterklasse

public class Animal { 
    protected int var; 

    public void eat() { 
     System.out.println("Animal eating"); 
    } 
} 
class Dog extends Animal { 
    Animal an = new Animal(); 
    an.var = 10; 
} 
+2

Was ist der Compiler-Fehler? –

+2

Da Sie außerhalb einer Methode sind – Jens

+0

** einen Hinweis nehmen **: Selbst wenn Sie 'protected' entfernen, erhalten Sie immer noch den Fehler. –

Antwort

0

Sie müssen es in eine Methode einfügen. Siehe unten:

Klasse Hund erstreckt Tier {

public void testMe() 
{ 
    Animal an = new Animal(); 
    an.var = 10; 
} 

}

1

Das Problem nicht durch die Tatsache verursacht wird, dass varprotected ist. Es ist, weil Sie brauchen diese Zeile in einem Verfahren einpacken, wie diese

public Dog(){ 
    an.var = 10; //Compiles Correctly 
} 
0

Wenn Sie die Dog-Klasse wollen standardmäßig das var Attribut haben, können Sie mit dem Konstruktor:

public class Dog extends Animal { 

    public Dog() { 
     this.var=10; 
    } 
} 

oder -nutzung:

Dog dog = new Dog(); 
dog.var=11; 
Verwandte Themen