构造函数在java中的作用是什么

What is the role of the constructor in java

本问题已经有最佳答案,请猛点这里访问。

我们知道Java中的新Stand()子类,第一个递归调用将是父类构造函数,如果父类是抽象类,将调用它的构造函数。如果这是真的,意味着父类将被实例化?但是抽象类不能被实例化,谁能解释这个问题。谢谢您。


您必须理解,构造函数不负责创建实例,而只负责初始化实例。创建实例是new关键字的角色(这甚至返回新创建的实例的引用,因为它没有返回类型,所以构造函数不能这样做)。因此,即使在调用超类的构造函数(可以是抽象的)时,也不会创建该超类的实例,而是执行代码来初始化从该超类继承的字段。


抽象类构造函数实际上是被子类继承的,因为当子类构造函数必须调用父类构造函数时,调用的构造函数相当于initialize方法,所以当子类抽象类中的对象根据需要初始化字段并执行一些ini时,可以生成t初始化代码。实际上,在调用构造函数之前不一定要创建类的实例,子类也需要调用父类的构造函数。它不一定生成一个实例构造函数,在某些特殊或特殊情况下的实现中,不调用创建实例构造函数。构造函数调用不一定生成实例,但它必须是调用的实例,就像普通的实例方法一样。


无论父类是具体类还是抽象类,都始终调用父类构造函数。实例化类不同于将其定义携带到子类。在实例化子类的情况下,虽然在子类对象中携带了父类的结构和方法,但它绝不意味着父类的实例化。