在 java 中使用对象 class 的默认构造函数

Use of default constructor of Object class in java

当你写 Dog d = new Dog(); Dog class 的默认构造函数将被调用。 Dog class 的默认构造函数的第一行将是 super() ,它将调用 Object class 的默认构造函数。这是什么意思?它将创建两个对象,一个对象 Dog class 和一个对象 Object class?

如果您说它只会创建 Dog class 的对象,那么 Object class 的默认构造函数会从默认构造函数中调用什么? Dog class?

让我们试着解释一下这是为什么;当你初始化一个"dog"的时候,你要想想那只狗是什么。你到底在这里做什么?好吧,首先,如果 dog class 扩展了任何东西,您还必须初始化该类型的东西。例如,假设 dog 扩展了 animal。如何在不初始化动物的情况下初始化狗?所有的狗都是动物,因此要初始化一只狗,您也可以调用 super() 来初始化动物。这一系列事件可以一直跟踪到对象的初始化;毕竟,java 中的所有对象 扩展了 Object。因此,如果不先拥有动物,就不能拥有狗;没有有机体就不能拥有动物;等等等等等等,如果没有先有一个对象,你就不能有一个___;这就是 java 使用 Object 的默认构造函数的原因。 1) 您必须 有一个对象,并且 2) 对象源代码中没有提供构造函数。

请记住,只有在您没有提供构造函数时才会使用默认构造函数。如果你写

public Dog() { 
    //code
}  // this is just a no param constructor

在您的代码中,不会为您提供默认构造函数。在java中,默认构造函数只有在你没有定义的情况下才会给你。

首先 - 默认构造函数是编译器为您提供的构造函数,以防您不想编写它。如果您编写一个构造函数,那么将使用该构造函数(不是默认构造函数)。

回到你的问题,你在构造函数中只创建了一个对象。该对象将具有一些变量,这些变量将按照它们定义的顺序进行初始化。首先,您将初始化 super class 成员,然后初始化 Dog class 成员。这就是 super() 的意思。