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

java中对象类默认构造函数的使用,java,constructor,Java,Constructor,当您编写Dog d=newdog()时 将调用Dog类的默认构造函数。Dog类的默认构造函数的第一行将是super(),它将调用对象的默认构造函数。这是什么意思?它将创建两个对象,一个是Dog类的对象,另一个是object类的对象 如果您说它只会创建Dog类的对象,那么从Dog类的默认构造函数调用object类的默认构造函数会有什么影响?让我们试着解释为什么会这样;当你初始化一只“狗”时,你必须考虑它是什么。你到底在这里干什么?首先,如果dog类扩展了任何内容,那么还必须初始化该类型的内容。例如

当您编写
Dog d=newdog()时
将调用
Dog
类的默认构造函数。
Dog
类的默认构造函数的第一行将是
super()
,它将调用
对象的默认构造函数。这是什么意思?它将创建两个对象,一个是
Dog
类的对象,另一个是
object
类的对象


如果您说它只会创建
Dog
类的对象,那么从
Dog
类的默认构造函数调用
object
类的默认构造函数会有什么影响?

让我们试着解释为什么会这样;当你初始化一只“狗”时,你必须考虑它是什么。你到底在这里干什么?首先,如果dog类扩展了任何内容,那么还必须初始化该类型的内容。例如,让我们假设狗延伸了动物。如何在不初始化动物的情况下初始化狗?所有的狗都是动物,所以要初始化一只狗,你可以调用
super()
来初始化动物。这个事件链可以一直跟踪到对象的初始化;毕竟,java中的所有对象都扩展了
对象
。因此,如果不先养动物,就不能养狗;没有生物,你就不可能有动物;等等等等,如果没有对象,你不能有一个uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;这就是java使用对象的默认构造函数的原因。1) 必须有一个对象,2)对象源代码中没有提供构造函数

请记住,只有在未提供构造函数的情况下才会使用默认构造函数。如果你写

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

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

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


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

构造函数不会创建实例。它初始化它。另外,不要混淆默认构造函数和无参数构造函数。即使对象也有一些东西需要初始化。请参阅javadoc for java.lang.Object以了解更多信息。构造函数用于初始化成员变量,而不是创建实例。当您调用super时,它会调用object的默认构造函数来初始化成员,而不是创建object的对象class@laune我确实查过javadoc。未提及以下内容:(你还有什么困惑?我完全同意你的看法,但我的疑问是在创建对象时对象类的默认构造函数会有什么影响。什么是对象的初始化?你的意思是你想要对象构造函数中的代码吗?对不起..我理解初始化,我不想要任何代码。那么这里的问题是什么?什么t是在创建任何类的对象时使用对象类的默认构造函数,因为任何类的构造函数总是调用对象类的默认构造函数?