gpt4 book ai didi

java - 将参数作为 Wrapper 类传递并覆盖

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

请澄清我对覆盖的疑问,当我调用一个没有被覆盖的方法时,被调用的方法是父类的,请简要说明一下,例子是这样的

   public class A {
public void test(int x){
System.out.println("Haiiiiiii");
}
}

public class B extends A{
public void test(Integer x){
System.out.println("hiii Im b's method");
}
}

public class Main {
/**
* @param args
*/
public static void main(String[] args) {
B a=new B();
a.test(2);
}
}

我正在调用 b 的方法,但在 B 类中,该方法将包装类作为参数。

最佳答案

有两种方法。一种接受 int 类型,另一种接受 Integer 类型。因此,当您首先调用 test() 方法时,它会尝试在不执行任何自动装箱 的情况下找到合适的方法。在这种情况下,它可以找到接受 int 的父类 test() 方法。因此 java 将执行它。

如果万一它不存在,那么它将尝试自动装箱您的参数并检查是否有合适的方法。在这种情况下,您的子类方法将被执行。

已编辑Java 总是会为一种类型选择最具体的方法。仅在必要时才进行转换/自动装箱/拆箱。

如果你想调用子类的方法你可以试试

a.test(new Integer(2));

关于java - 将参数作为 Wrapper 类传递并覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25479808/

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