package day33; public class Person { public String name; public int age; public Person() { System.out.println("调用了父类的无参构造"); } }
package day33; public class teacher extends Person{ public teacher() { System.out.println("调用了子类的无参构造"); } }
package day33; public class Application { public static void main(String[] args) { teacher teacher = new teacher(); } }
结果为先调用父类的无参构造 然后再调用子类的无参构造
为什么会这样呢?
因为在Java中 子类的无参构造默认在 public Person() { System.out.println("调用了父类的无参构造");}
中的System.out.println("调用了父类的无参构造");前面有一个super();并且super前面不能写任何代码段
我们可以看见报错了
注意
-
super调用父类的构造方法必须在第一个
-
super出现在子类的方法或者构造方法中 (不然就会调到object上面去了)
-
super和this不能同时调用构造方法
super和this的不同:
-
对象不同
-
this调用是调用者本身这个对象
-
super调用的是父类
-
-
前提不同
-
this没有继承也可以调用
-
super代表父类
-
-
构造方法不同
-
this本类构造
-
super父类构造
-