这个JAVA为啥输出这些

图片说明
为啥输出这些

建议看下类的加载顺序原理,针对楼主问题,为什么会输出以上内容,这里解释下:
1.首先执行Faculty中的main方法,new了一个Faculty对象,
2.当实例化一个对象时,首先会执行父类无参构造方法,所以就到了Employee类的无参构造方法,
3.而Employee又继承于Person类,所以就又到了Person类的无参构造方法,所以首先输入 person()这个方法中的值,
4.然后执行Employee类中Employee()方法,this(s)又会调用Employee(String s)
5.this执行过,继续顺序执行打印
6.最后才运行main方法中的new Faculty("John smith"),执行this,调用Faculty中无参构造方法Faculty(),执行打印语句
7.最后顺序执行Faculty(String st)

这是考JAVA实例化顺序的题。
new一个对象的时候,有父类的时候先初始化父类的构造函数,没有指定参数的话执行的是已经声明的无参构造函数。因此先执行Person的无参构造函数。
接下来初始化Employee 的无参构造函数,但他的无参构造函数调用了String类型的构造参数。 最后执行Faculty的有参构造函数,这个里面调用了无参构造函数,因此输出的结构就是你上面看到的那些。
这个你可以看看关于Java实例化顺序的一些文章

java中存在,继承父类时候子类实例化,会调用父亲类的无参构造,而且无参构造都是从原始祖先开始向下输出,直到子类,子类this()是调用子类无参。