访问子类中的超类变量/方法

时间:2017-03-29 10:03:48

标签: java inheritance access-modifiers

由于子类可以访问定义为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;
}

3 个答案:

答案 0 :(得分:1)

varprotected这一事实不会导致问题。这是因为你需要在方法中包装该行,就像这样

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;