类型转换和方法重载

NIN*_*OOP 5 java overloading type-conversion

这是示例代码:

public class OverloadingExample {
public void display(Object obj){
    System.out.println("Inside object");
}

public void display(Double doub){
    System.out.println("Inside double");
}

public static void main(String args[]){
    new OverloadingExample().display(null);
}
}
Run Code Online (Sandbox Code Playgroud)

输出:

里面加倍

任何人都可以解释我为什么Double调用带参数的重载方法而不是用Object

Jon*_*eet 6

是的 - 因为Double比具体更具体Object.有一个转换,从DoubleObject,而不是倒过来,这是什么使得它更加具体.

有关更多信息,请参见JLS的第15.12.2.5节.细节很难遵循,但这有助于:

非正式的直觉是,如果第一个方法处理的任何调用都可以传递给另一个没有编译时类型错误的调用,那么一个方法比另一个方法更具体.

所以在这里,任何调用display(Double doub)都可以通过display(Object obj)但不是相反的方式来处理.