gpt4 book ai didi

Java继承查询

转载 作者:行者123 更新时间:2023-11-29 05:42:25 25 4
gpt4 key购买 nike

假设我有两个类,其中 SubClass 继承自(扩展)SuperClass。

有什么区别:

SuperClass obj1 = new SubClass();

和:

SubClass obj2 = new SubClass();

两者都将查找父类(super class)的构造函数并对其进行初始化(显然是正确的构造函数)。两者都可以访问父类(super class)实现。但一个是(据我所知)包裹在父类(super class)中的子类(第一个示例),另一个是子类对象(第二个示例)。

这将如何影响代码的运行和解释方式?

关于这两个对象有何不同,开发人员需要注意哪些现实问题?

在此先感谢您的帮助!

最佳答案

将其初始化为父类(super class)的唯一区别是,如果子类实现具有父类(super class)没有的方法,则无法通过此对象引用访问它们。

但是“在内部”,这仍然是子类的一个实例;因此,如果您调用父类(super class)中定义的方法但子类重写了它,则调用的是子类的方法:JVM 从更具体到更一般的顺序查找方法。

作为一个复杂的例子,让我们以 ObjectString 为例:

final Object o = "Hello!"; // in fact this calls new String("Hello!")

o.toString(); // <-- uses String's .toString(), not Object's

// Can't do that: String defines .subString() but Object does not
o.subString(1);

关于Java继承查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17009603/

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