由于子类可以访问定义为protected的超类变量和方法,为什么下面的代码会产生编译错误?
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;
}
答案 0 :(得分:1)
var
为protected
这一事实不会导致问题。这是因为你需要在方法中包装该行,就像这样
public Dog(){
an.var = 10; //Compiles Correctly
}
答案 1 :(得分:0)
您需要将其放在Method中。见下文:
类狗延伸动物{
public void testMe()
{
Animal an = new Animal();
an.var = 10;
}
}
答案 2 :(得分:0)
如果您希望Dog类默认设置var属性,则可以使用构造函数:
public class Dog extends Animal {
public Dog() {
this.var=10;
}
}
或使用:
Dog dog = new Dog();
dog.var=11;