在 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() 的意思。
当你写 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() 的意思。