super调用父类构造器及与this对比详解

super调用父类构造器及与this对比详解

image

package zaiyang.oop.demo05;

public class Application {
    public static void main(String[] args) {

        Student student = new Student();

        //student.test("会武功的羊");
        //student.test1();


    }

}
package zaiyang.oop.demo05;
//学生 is 人 :派生类,子类
//子类继承了父类,就会拥有父类的全部方法!
//Ctrl + H
public class Student extends Person {
    public Student() {
        //隐藏代码;调用了父类的无参构造
        super();//调用父类的构造器,必须要在子类构造器的第一行
        //this();//this必须是构造器的第一行
        System.out.println("Student无参构造执行了");
    }

    private String name = "zhuifengdeyang";

    public void print(){
        System.out.println("Student");
    }

    public void test1(){
        print();//(等同于this.print)Student
        this.print();//(要加this关键字)Student
        super.print();//Person
    }
    public void test(String name){
        //System.out.println(name);//待输入name的值,会武功的羊
        //System.out.println(this.name);//子类本身的zhuifengdeyang
       // System.out.println(super.name);//父类的追风的羊
    }

}
package zaiyang.oop.demo05;
//Person 人 :父类
//在Java中,所有的类都默认直接或间接的继承Object
public class Person {

  public Person() {
    System.out.println("Person无参构造执行了");
  }

  protected String name = "追风的羊";

  public void print(){
    System.out.println("Person");
  }
}
Super注意点:
super调用父类的构造方法,必须在构造方法的第一个
super必须只能出现在子类的方法或者构造方法中!
super和this不能同时调用构造方法!

VS this:
代表的对象不同:
    this: 本身调用者这个对象
    super: 代表父类对象的应用
前提
    this: 没有继承也可以使用
    super: 只能在有继承条件下才可以使用
构造方法
    this();本身的构造
    super();父类的构造
posted @ 2022-04-12 11:44  追风的羊  阅读(80)  评论(0)    收藏  举报