gpt4 book ai didi

java - 什么决定了重写方法的调用

转载 作者:行者123 更新时间:2023-12-01 18:48:57 24 4
gpt4 key购买 nike

public class Superclass{

void method1(){
method0();
}

void method0(){
System.out.println("superclass");
}

}



public class Subclass extends Superclass{

void method0(){
System.out.println("subclass");
}

}


public class Runclass{

public static void main(String[] args){
new Subclass().method1();
}

}

此代码打印出 - 子类。

假设是

new Superclass().method1();

然后,它会打印出 - superclass

调用的方法是否取决于调用该方法的实例?

最佳答案

它是动态方法调度(运行时多态性)的示例。
在动态方法中,重写方法的调度调用在运行时解析。
当你打电话时

new Superclass().method1();  

输出是 - 父类(super class)
因为父类(super class)没有任何关于子类的信息。
&当你打电话时

new Subclass().method1();  

输出是 - 子类
因为当调用重写方法时,java根据调用时引用的对象类型来确定要执行哪个版本的方法。

关于java - 什么决定了重写方法的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16495619/

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