gpt4 book ai didi

java - 在调用父类和子类中可用的方法时,在多态性中选择了哪个方法?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:31:32 25 4
gpt4 key购买 nike

我不明白为什么ab.m3()方法调用的是父类的函数而不是子类。我想也许将一个新的 Integer 传递给该方法可能会调用父类的方法,因为 Integer 是一个 Object 所以我尝试了一个int 但它仍然给了我相同的结果!

public class A {

public void m1(){
System.out.println("A.m1");
}
public void m2(){
System.out.println("A.m2");
}
public void m3(Object x){
System.out.println("A.m3");
}
}

public class B extends A{

public void m1(){
System.out.println("B.m1");
}
public void m2(int x){
System.out.println("B.m2");
}
public void m3(int x){
System.out.println("B.m3");
}

public static void main(String[] argv){
A aa = new A();
A ab = new B();

int num = 2;

ab.m1();
ab.m2();
ab.m3(new Integer(2));
ab.m3(num);

}
}

输出:

B.m1
A.m2
A.m3
A.m3

最佳答案

B.m3 不会覆盖 A.m3,因为参数列表不兼容。

因为A中唯一匹配的方法是A.m3,而B中因为没有override,所以是 A.m3 将被调用。

关于java - 在调用父类和子类中可用的方法时,在多态性中选择了哪个方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54173688/

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