Java 构造函数和构造函数重载

Java 构造函数和构造函数重载,java,oop,constructor,constructor-overloading,Java,Oop,Constructor,Constructor Overloading,有人能解释吗 当我们重载一个具有不同参数的构造函数时,一个具有数据类型object,另一个具有数据类型string,当我们创建这个类的对象并将输入参数设置为null时,它调用的是以字符串作为输入参数的构造函数,而不是以输入参数作为对象的构造函数。既然Object是String的超类,有人能告诉我它为什么用输入参数String调用构造函数吗 Class A { public A(Object o) { System.out.println("Object Drawn");

有人能解释吗

当我们重载一个具有不同参数的构造函数时,一个具有数据类型object,另一个具有数据类型string,当我们创建这个类的对象并将输入参数设置为null时,它调用的是以字符串作为输入参数的构造函数,而不是以输入参数作为对象的构造函数。既然Object是String的超类,有人能告诉我它为什么用输入参数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);
   }
 }

输出:-字符串绘制

它总是调用最具体的匹配方法或构造函数。如果没有,您将始终调用
对象
,重载它将毫无意义


这种方法在爪哇和C++ +P>中使用,这既可以是C++问题,也可以是java问题,但不是两者都可以。它看起来是java,所以为什么 C++ +/Cuth>标签?我冒昧地删除C++标志。我不知道语言是如何重要的。答案是一样的。”PeterLawrey:这是显而易见的。正如有人经历过C++,我不能自信地回答关于java的问题,所以标签浪费C++的时间,只有我这样的人。没有人来这里寻找C++的答案,他们不知道这两种语言在这方面的行为方式相同,可以从C++中提取C++相关的有用信息。由于<>代码> <代码> >我们使用 null < /C> >,唯一可能的C++等价是使构造函数取一个指向“代码>对象< /COD>和<代码>字符串的指针,调用<代码> A(NulLPTR)会导致由于错误的过载而导致编译错误。还有空对象吗?如果你使用

它肯定是一个空字符串。如果使用
null
is,则它可以是字符串或对象。术语“空字符串”和“空对象”很容易混淆,没有标准值。