gpt4 book ai didi

java - 子类和父类(super class)的混淆

转载 作者:行者123 更新时间:2023-12-01 22:47:36 25 4
gpt4 key购买 nike

Master test = new Inner();
System.out.println(test.getClass());

在上面的示例中,Inner 类扩展了 Master 类,但我感到困惑的是 test.getClass() 返回 Inner,但 test 不是真的属于 Master 类型吗?除了构造函数之外,内部类中不能使用任何方法/属性,只能使用主类中的方法/属性。此外,Inner 的构造函数实际上设置了 Inner 独有的属性,但不知何故,即使它使用构造函数,这些属性也不存在于测试中 - 这似乎不应该工作。

例如,如果将类定义为:

public class Master {
public int number = 0;
public Master() {
number = 9;
}
}

public class Inner extends Master {
public int innerNumber = 0;
public Inner() {
number = 1;
innerNumber = 2;
}
}

test将使用Inner的构造函数来设置innerNumber,但test.innerNumber甚至不存在,因为innerNumber不是Master类型的一部分。另外,test.getClass()表示它是Inner类型,而不是Master类型。

最佳答案

Object.getClass() 返回对象的动态类型的类对象,而不是静态类型(您声明它的变量或属性的类型) .

因此 new Inner().getClass() 返回 Inner.classnew Master().getClass() 返回 Master.class 无论保存引用的变量是什么类型。

关于java - 子类和父类(super class)的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25115138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com