gpt4 book ai didi

Java 覆盖方法

转载 作者:行者123 更新时间:2023-12-04 11:26:08 25 4
gpt4 key购买 nike

我对 Java 覆盖有一点困惑。假设我们有以下继承:

class A{
public A(){
}

void show(){
System.out.println("SuperClass");
}
}

class B extends A{

@Override
void show(){
System.out.println("SubClass");
}

}

public class Test {

public static void main(String[] args) {
B b = new B();
b.show();
}
}

显然,class B 覆盖了 class A 继承的方法 show()。为什么 b.show(); 不打印消息 System.out.println("SuperClass"); 因为 class B 有现在是 class A 的方法 show() 吗?

谢谢。

最佳答案

B类的show方法重写了A类的show方法,没有调用,所以System.out.println("SuperClass");<没有理由 在 B 的实例上调用 show 时执行。

如果将 B 类更改为:

class B extends A 
{
@Override
void show(){
super.show ();
System.out.println("SubClass");
}
}

在 B 的实例上调用 show 也会执行 A 的 show 方法的逻辑。

关于Java 覆盖方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29699234/

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