gpt4 book ai didi

java - 关于Java继承的问题

转载 作者:行者123 更新时间:2023-12-02 02:54:00 28 4
gpt4 key购买 nike

假设我有这样的情况:

class Base{

public Base() {
System.out.println("Base");
}

}


class Derived extends Base{

public Derived(){

System.out.println("Devired");
}
}


class DeriDerived extends Derived{
public DeriDerived(){
System.out.println("DeriDevired");
}
}

我不太清楚继承是如何工作的,例如,如果我尝试: Derived b = new DeriDerived();DeriDerived b1 = new DeriDerived(); ,它们都产生相同的结果。

对于第二种情况: DeriDerived b1 = new DeriDerived(); 据我所知(可能是正确的,也许不是???),DeriDerived 将调用其Derived 的父类(super class),Devired 将再次调用其 Base 的父类(super class),因此最后我们将得到如下结果:>基于/Devired/DeriDerived

但是对于第一种情况,我不明白如何获得与Based/Devired/DeriDerived相同的结果

谁能帮我解释一下吗?

非常感谢!

最佳答案

在java中,保存对象引用的变量不会影响对象的创建。

在所有情况下,您都调用 DeriDerived 构造函数,但像这样创建的对象可以通过以下类型引用:DeriDerived、Devired、Base、Object。

但在每种情况下,您都有不同的方法可见性。

因此,当您创建 DeriDerived 的实例,但由 Devired 引用它时,您将只能访问 Devired 和 Base 类中的方法。您将看不到 DeriDerived 类中的方法,尽管这将是对同一对象 -> DeriDerived 的引用。

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

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