浅谈JAVA继承关系中的构造函数

话不多说直接上例子,我的例子中定义了两个类,TheSon和TheFather,TheSon继承了TheFather,如图:

TheSon类的定义:

在这里插入图片描述

TheFather类的定义:
在这里插入图片描述

当我们初始化TheSon类的时候,也就是new TheSon()的时候,就会调用TheSon类中的无参构造器,如图:

在这里插入图片描述


我们看到在代码中并没有调用TheFather类中的构造,来看看运行结果:

在这里插入图片描述


可以看到即使没有调用父类的构造父类的构造依旧执行了,那这是怎么回事呢?

答案很简单:java在执行过程中在执行子类的构造方法之前会隐式的调用父类的无参,如图:

在这里插入图片描述


再看运行结果:

在这里插入图片描述


当我们显示的调用之后,它就不会再进行隐式的调用,比如我们在相同地方调用父类的有参构造,如图:

在这里插入图片描述


在这里插入图片描述

有萌新可能就会疑问了,super这个关键字到底是干嘛的?

概念:在Java类中使用Super来引用父类的成分,用this来引用当前对象

提问:new TheSon() 时创建的是一个对象还是两个对象?

原文地址:https://www.cnblogs.com/blackjoyful/p/11547116.html