首页 > 代码库 > Null作为参数的时候,Java编译器如何调用函数?
Null作为参数的时候,Java编译器如何调用函数?
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()方法,则会出现编译错误。
Null作为参数的时候,Java编译器如何调用函数?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。