java - java中 "Instance variables are not over-rided"是什么意思?

标签 java member-hiding

我知道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/

相关文章:

java - 为什么两种情况下的输出不同?

C++ : What is happening when a non-overridden calls a overridden method?

java: 如何在 jboss 平台中对用户隐藏 html 和图像等静态资源?

java - 用eclipse安装maven

java - flash 有mxml 微软有xaml 什么有java?

java - 工具栏中的文本框 Eclipse RCP 应用程序

java - Struts - 在 Action 之间传递参数

java - eclipse 警告 "field declaration hides another field or variable"的使用?

c# - 在 C# 中的每个派生类中都有一个更具体的接口(interface)

Python:在派生类中隐藏基类的成员