2012-09-08 137 views
3

任何人都可以解释吗?构造函数和构造函数重载

当我们重载一个具有不同参数的构造函数时,其中一个具有数据类型对象,另一个具有数据类型字符串,并且当我们创建此类的对象并提供输入参数为null时,它以字符串作为输入调用构造函数参数,但不包含输入参数为Object的构造函数。由于Object是String的超类,任何人都可以告诉我为什么它使用输入参数字符串调用构造函数?

Class A 
{ 
    public A(Object o) 
    { 
    System.out.println("Object Drawn"); 
    } 
    public A (String o) 
    { 
    System.out.println("String Drawn"); 
    } 
    public static void main(String args[]) 
    { 
    new A(null); 
    } 
} 

输出: - 字符串拉

+1

这是C++问题或Java问题,但不是两者都有。它看起来是Java,那么为什么'C++'标签? –

+0

我冒昧地删除了C++标志。 – juanchopanza

+2

我不明白语言问题给出的答案是一样的。 –

回答

3

它总是调用最具体的匹配方法或构造函数。如果没有,你总是会打电话给Object并超载,这将毫无意义。

此方法在Java和C++中使用

+0

这是因为空字符串“”更合适吗? 有没有东西作为一个空对象? –

+1

如果你使用'“”'它肯定是一个空字符串。如果你使用'null',可以是一个String或一个Object。术语“空字符串”和“空对象”只是令人困惑,并没有标准值。 –