class Weather{
int humidity;
//default value is 0;
}
class Rainy extends Weather{
void changeHumidity(){
humidity = 10;
System.out.println("The humidity is " + super.humidity);
}
}
public class Test{
public static void main(String[] args){
new Rainy().changeHumidity();
System.out.println(new Weather().humidity);
}
}
这里的输出是: 湿度为 10 且 0
为什么super.humidity返回10。我知道实例变量不是继承的,但它们可以在子类中访问。如果它们可以在子类中访问,那么这是否意味着它们在父类(super class)和子类或两者之间共享父类(super class)和子类有不同的副本。现在要问为什么 super.humidity 返回 10 但在下一行它返回 0。请明确我的概念。
最佳答案
在Rainy类中不存在字段湿度,因此该类使用父类字段进行初始化
如果您在子类中声明湿度字段,请更改该字段,但打印父类字段
关于java - java中的实例变量继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42592348/