我知道java中称为字段隐藏
的概念。但我仍然对实例变量未被覆盖感到困惑。
据我目前的了解,重写父类(super class)的方法意味着虽然子类可以使用父类(super class)的方法,但JVM会调用子类被重写的方法。
我通过链接阅读了类似的字段隐藏
内容:- Hiding Fields
因此,无论如何,如果我们更改子类中继承的实例变量的值,我们都会覆盖该实例。
我很困惑,请帮忙。
<小时/>我正在使用以下父类(super class):-
public class Animal{
File picture;
String food;
int hunger;
int width, height;
int xcoord, ycoord;
public void makeNoise(){
.........
}
public void eat(){
.............
}
public void sleep(){
..........
}
public void roam(){
.............
}
}
它有Tiger、cat、dog、hippo等子类。子类重写了makeNoise()、eat和roam()方法。
但是每个子类还使用一组不同的值作为实例变量。
因此,根据我的困惑,我有点重写父类(super class) Animal 的所有实例变量和 3 个方法;并且通过使用 super
关键字,我仍然可以为子类提供父类(super class)实例变量。
最佳答案
这意味着如果您调用父类(super class)中的方法,它将解析为子类中的重写版本(如果您的实例是子类)。但是,对成员变量的引用将绑定(bind)到进行调用的类中该变量的声明。
关于java - java中 "Instance variables are not over-rided"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13008346/