super关键字

Posted codercql

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了super关键字相关的知识,希望对你有一定的参考价值。

关键字super指代父类。

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

           2)调用父类的方法

语法:super()、super(parameters)

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

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

构造方法链

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

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

  

public class Faculty extends Employee {

    public static void main(String[] args) {
        new Faculty();

    }
    public Faculty() {
        System.out.println("fourth");
    }
}

public class Employee extends Person{
    public Employee() {
        this("second");
        System.out.println("third");
    }
    public Employee(String s) {
        System.out.println(s);
    }
}

public class Person {
    public Person() {
        System.out.println("first");
    }
}

运行结果:

技术图片

 

 

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

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

调用父类的方法

super.方法名(参数);

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

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

方法重写

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

 1 public class Faculty extends Employee {
 2     public static void main(String[] args) {
 3         Faculty user=new Faculty();
 4         System.out.println(user.Change());
 5 
 6     }
 7     public Faculty() {
 8         System.out.println("fourth");
 9     }
10     public String Change() {
11         //重写了父类的方法12         return super.Change()+"
This is Employee";
13     }
14 }
15 
16 public class Employee extends Person{
17     public Employee() {
18         this("second");
19         System.out.println("third");
20     }
21     public Employee(String s) {
22         System.out.println(s);
23     }
24     public String Change() {
25         return "This is Person";
26     }
27 }
28 
29 public class Person {
30     public Person() {
31         System.out.println("first");
32     }
33 }

运行结果:

技术图片

 

以上是关于super关键字的主要内容,如果未能解决你的问题,请参考以下文章

不立即分离片段

Java学习笔记3.5.3 继承 - super关键字

请教关于java super 关键字问题

26 super关键字

super关键字

java 类方法代码块修饰式关键字总结