假设我有以下重载函数
public class Test {
public static void funOne(String s){
System.out.print("String function");
}
public static void funOne(Object o){
System.out.print("Object function");
}
public static void main(String[] args) {
funOne(null);
}
}
为什么会funOne(null)
调用该方法String
参数签名?这里重载的优先级是什么?
在这种情况下,类层次结构中较低的类将具有优先权。换句话说,更具体的类类型是String
在这种情况下,因为String
延伸Object
从技术上讲。
如果您有以下情况
public class A {
...
}
public class B extends A {
...
}
然后当您定义如下重载方法时:
public void test(A object) {
...
}
public void test(B object) {
...
}
然后打电话test(null)
将调用第二个方法,因为B
在类层次结构中处于较低位置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)