十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
例如,如果父类的构造函数有参数,子类的构造函数中的第一句话是super(…)注意:调用子类构造函数时,会先调用父类构造函数,然后调用子类构造函数。如果要调用父类而不是子类的成员,可以:super。不创建父类的实例。如果你能创建一个父类的实例,我可以举一个反例来说明这是错误的:当父类是抽象类而子类不是抽象类时,子类在调用构造函数时也会调用父类构造函数,创建子类和父类的两个实例。但是,抽象类不能实例化。原来的假设是错误的。因此,父类不会被创建为实例。理论理解:当用构造函数添加new时,会创建一个对象(实例)。调用子类构造函数时,调用父类构造函数是初始化子类从父类继承的部分。此过程不对父类使用new,因此不会为父类创建对象(实例)。
创新互联是一家专业提供台江企业网站建设,专注与成都网站设计、成都网站制作、H5技术、小程序制作等业务。10年已为台江众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。子类调用父类的构造函数有什么用?未创建父类对象,但调用了父类的构造函数。构造函数只是一个成员方法,没有什么特别之处。
如果查看字节码,新建和调用构造函数是两个步骤。Javacreateobject是new,callconstructor是invokespecial<init>。这里还可以看到,在调用构造函数时,您已经有了一个对象(new),因此调用构造函数并不意味着创建一个新对象。
很多人误解了这一点。还有这个。转到其他对象。但是,如果您查看字节码,它们实际上是对象的引用,但是类的名称不同。说白了,字节码中没有this和super关键字。如果是成员方法,则需要使用this或super,两者都是0。
当然,这只是一个字节码,与真正的虚拟机执行的最终代码不同,但逻辑是这样的,这并不妨碍我们理解它是如何工作的。
我读了其他朋友的答案。如果您想根据父类对象的创建来理解它,没有大问题。从逻辑上讲,我们可以认为那里有一个父类对象,并且内存中有父类的成员。