gpt4 book ai didi

java - 为什么Java基类构造函数调用派生类的方法?

转载 作者:行者123 更新时间:2023-12-01 07:17:18 26 4
gpt4 key购买 nike

我有一个派生的 Java 类重写基类的方法。当基类调用该方法时,它执行派生类的函数,而不是它自己的函数。为什么?

public class HelloWorld{

public static void main(String []args){
Derived d = new Derived();
System.out.println("Main");
}
}

class Base {
void f() {
System.out.println("Base::f()");
}

public Base() {
f();
}
}

class Derived extends Base {
void f() {
System.out.println("Derived::f()");
}

public Derived() {
f();
}
}

代码打印 Derived::f() 两次,我希望它打印 Base::f() 后跟 Derived::f(),就像 C++ 中那样

最佳答案

在 Java 中,与 C++ 不同,实例方法默认是虚拟的。这意味着方法调用是在运行时根据对象的实际运行时类(而不是在编译时)分派(dispatch)的。在 C++ 中,您可以使用关键字 virtual 来实现此行为。

关于java - 为什么Java基类构造函数调用派生类的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56431762/

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