Null作为参数的时候,Java编译器如何调用函数

 我来答
约定20125
2018-08-24 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.1万
采纳率:96%
帮助的人:2747万
展开全部

1 public class TestNull { 2     public void method(Object o){ 3         System.out.println("Object Version"); 4     } 5      6     public void method(String s){ 7         System.out.println("String Version"); 8     } 9     10     public static void main(String[] args) {11         TestNull tn= new TestNull();12         tn.method(null);13     }14 15 }

编译可以通过,运行结果如下:

那么,Null作为参数的时候究竟如何调用函数?回答这个问题之前,先来看看其他例子。

public class TestCallMethod2 {    void test(Object s){ System.out.println("Object version");}    void test(TestCallMethod2 t){System.out.println("TestCallMethod2 version");}    void test(SubTestCallMthod2 t){System.out.println("SubTestCallMethod version");}    //void test(String s){System.out.println("String version");}

public static void main(String[] args) {
TestCallMethod2 t = new TestCallMethod2();
t.test(null);
t.test(new Object());
}

}class SubTestCallMthod2 extends TestCallMethod2{}

通过上述代码可以知道,4个test()函数,当null作为实参进行调用的时候,会根据继承的关系,调用最底层子类的test()函数,当第四个test()方法不注释的时候,由于String类型和TestCallMethod2两个类同属于Object子类,同时存在兄弟类的test()方法,则会出现编译错误。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式