super关键字

关键字super指代父类。

用途:1)调用父类的构造方法

           2)调用父类的方法

语法:super()、super(parameters)

构造方法用于构造一个类的实例。子类继承父类时,父类的构造法方法不会被子类继承。所以需要用到父类的构造方法或方法时,super就派上用场啦。

super()、super(paraments)必须出现在子类构造方法的第一行,是显示调用父类构造方法的唯一方式

构造方法链

构造方法可以调用重载的构造方法或父类的构造方法。

如果都没有被显示地调用,编译器会自动地将super()作为构造方法的第一条语句。

public class Person {
    public Person() {
        System.out.println("first");
    }
}
public class Employee extends Person{
    public Employee() {
        this("second");//this调用本类的有参构造方法
        System.out.println("third");
    }
    public Employee(String s) {
        System.out.println(s);
    }
}

public class Faculty extends Employee {
    public static void main(String[] args) {
        new Faculty();
    }
    public Faculty() {
        System.out.println("fourth");//super()没有显式调用的话,自动调用父类无参构造方法,所以每个类最好都写下无参构造方法
    }
}

运行结果:

 

 

在调用Faculty的无参构造方法前,因为Faculty是Employee的子类,所以先调用父类无参构造方法,由于Person是Employee的父类,所以先调用父类的的无参构造方法。

在设计一个可以被继承的类时,最好为每一个类提供一个无参构造方法,以便于对该类进行扩展,同时避免错误。

调用父类的方法

super.方法名(参数);

如果仅仅是调用父类的方法,是不需要使用super的,子类直接继承父类的方法,可以直接调用。

在方法重写中就需要用到关键字super!

方法重写

什么是方法重写:子类修改父类的方法。

 public class Person {
     public Person() {
         System.out.println("first");
     }
 } 
public class Employee extends Person{
     public Employee() {
         this("second");
         System.out.println("third");
     }
     public Employee(String s) {
         System.out.println(s);
     }
     public String Change() {
         return "This is Person";
     }
 } 
public class Faculty extends Employee {
     public static void main(String[] args) {
         Faculty user=new Faculty();
         System.out.println(user.Change());
 
     }
     public Faculty() {
         System.out.println("fourth");
     }
     public String Change() {
         //重写了父类的方法      
        return super.Change()+"\nThis is Employee";
   
  }
 }

运行结果:

 

posted @ 2020-07-15 21:53  codercql  阅读(290)  评论(0编辑  收藏  举报