访问子类中的超类变量/方法
Posted
技术标签:
【中文标题】访问子类中的超类变量/方法【英文标题】:Accessing super class variables/methods in sub class 【发布时间】:2017-08-22 18:09:16 【问题描述】:既然子类可以访问父类定义为受保护的变量和方法,为什么下面的代码会出现编译错误?
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;
【问题讨论】:
编译错误是什么? 因为你在方法之外 提示:即使你删除protected
,你仍然会得到错误。
【参考方案1】:
问题不是由var
是protected
这一事实引起的。这是因为你需要将那一行包裹在一个方法中,像这样
public Dog()
an.var = 10; //Compiles Correctly
【讨论】:
【参考方案2】:你需要把它放在一个方法中。见下文:
类狗扩展动物
public void testMe()
Animal an = new Animal();
an.var = 10;
【讨论】:
【参考方案3】:如果希望 Dog 类默认设置 var 属性,可以使用构造函数:
public class Dog extends Animal
public Dog()
this.var=10;
或使用:
Dog dog = new Dog();
dog.var=11;
【讨论】:
以上是关于访问子类中的超类变量/方法的主要内容,如果未能解决你的问题,请参考以下文章