Java中, 当继承链上的函数签名都不满足要求的时候, 类型转换是怎么工作的呢? 如果能全面解释一下方法查找的机制就更好了, 谢谢
public class Main {
public static void main(String\[\] args) {
Son son = new Son();
short a = 100;
System.out.println(son.plusOne(a));
}
}
class Father {
int plusOne(int a) {
System.out.println("F");
return a + 1;
}
}
class Son extends Father {
long plusOne(long a) {
System.out.println("S");
return a + 1;
}
}
/\* OUTPUT:
F
101
\*/
自动类型转换会寻找类型最接近的那一个方法,比如与
short a 100
最接近的就是int a 100
,而char
会自动转换为最接近的int
。方法查找机制的话,有本书没在旁边,但你可以查一下: