有人可以解释一下吗?
当我们用不同参数类型重载构造函数时,一个是对象类型,另一个是字符串类型。当我们提供空输入参数创建该类的对象时,它会调用以字符串为输入参数的构造函数,而不是以对象为输入参数的构造函数。由于对象是字符串的超类,有人能告诉我为什么会调用带有字符串输入参数的构造函数吗?
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);
}
}
输出:- 字符串绘制
A
是用null
构造的,唯一可能的 C++ 等效方式是让构造函数接受一个指向Object
和String
的指针,并且调用A(nullptr)
将导致编译错误,因为存在二义性重载。 - juanchopanza