super就是调用父类的构造方法/属性 this就是调用本类的构造方法/属性 package com.OOP; public class Application01 { public static void main(String[] args) { Son son = new Son();//运行结果第一行是父类无参构造器运行,第二行是子类... //便可以发现问题,仅仅new了Son类但是却运行了父类,所以就是在子类的构造器中含有默认隐藏的super(); } }
package com.OOP; public class Father {
public Father() { System.out.println("父类无参构造器运行"); } String name="laowang"; public void print(){ System.out.println("打卡上班"); } }
package com.OOP; public class Son extends Father{ public Son() { System.out.println("子类无参构造器运行"); //默认隐藏了super();且必须在第一行 } String name="xiaowang"; public void print(){ System.out.println("打卡上学"); } public void test(){ print(); this.print();//子类的方法 避免混淆,尽量选取this这种书写方式 super.print();//父类的方法 } }
注意!
1,当父类中写了有参构造时,就必须要声明无参构造。不然子类也无法使用无参构造,但是可以使用有参构造。
2,this和super都必须存在于构造方法的第一行,所以不能同时存在