java中一个小问题
来源:百度知道 编辑:UC知道 时间:2024/05/30 17:21:10
public class a{
public void f(String x){}
public void f(StringBuffer x){}
pubilc void g(){f(null);}这个程序编译错误
public class a{
public void f(Object x){}
public void f(StringBuffer x){}
pubilc void g(){f(null);}这个程序就可以了,而且执行的是StringBuffer的方法。
请问这是怎么回事啊?是都是调用子类么?谢谢了!
string\stringbuffer默认都是null,大哥不会就别乱说!顺便请1楼的仔细讲讲,谢谢
public class a{
static Object o;
public static void main(String args[]){
System.out.println(o);}}运行结果也是null!朋友门能不能付点责任.........
public void f(String x){}
public void f(StringBuffer x){}
pubilc void g(){f(null);}这个程序编译错误
public class a{
public void f(Object x){}
public void f(StringBuffer x){}
pubilc void g(){f(null);}这个程序就可以了,而且执行的是StringBuffer的方法。
请问这是怎么回事啊?是都是调用子类么?谢谢了!
string\stringbuffer默认都是null,大哥不会就别乱说!顺便请1楼的仔细讲讲,谢谢
public class a{
static Object o;
public static void main(String args[]){
System.out.println(o);}}运行结果也是null!朋友门能不能付点责任.........
二楼的回答正好说反了,呵呵 不行正解用eclipse试试看
第一个有问题是因为,你调用f方法有歧义,那两个f方法都可以调用,编译器不知道调用哪个。所以不通过。
第二个就不存在那个问题了,因为Object的变量x不可以赋值为空。而下面那个f
方法可以,所以就只能调用第二个f()。也就不产生歧义了