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关键字的主要内容,如果未能解决你的问题,请参考以下文章