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!朋友门能不能付点责任.........

二楼的回答正好说反了,呵呵 不行正解用eclipse试试看

第一个有问题是因为,你调用f方法有歧义,那两个f方法都可以调用,编译器不知道调用哪个。所以不通过。

第二个就不存在那个问题了,因为Object的变量x不可以赋值为空。而下面那个f
方法可以,所以就只能调用第二个f()。也就不产生歧义了