java - java中的实例变量继承

标签 java

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/

相关文章:

java - DefaultTableModel 不接受对象类型

java - 如何在 JPA 中使用 StringDistance 类

java - 如何在 Eclipse 和 Subversion 中开始一个新项目

java - BroadcastReceiver 中如何直接使用方法 "getSystemService"?

java - java中的交错 float 和字符串

java - 如何通过MBean获取数据

java - android 媒体播放器中的完成监听器

java - 如何在 Hibernate 模板中执行更新(命名查询)?

java - 有 Java Platform SE 8 所有类的类图吗?

Java 错误 : Could not find or load main class