Java中的super关键字

xiaoliuqq / 2023-07-25 / 原文

Java中super是一个关键字,和this的比较类似。

1、特点:

  (1)super 指向的是当前对象的父类型, 而 this 指向的是当前对象;

  (2)虽然在大部分情况下 super 可以省略,但如果需要使用父类的方法或者属性,则必须使用 super;

 1 public class Person {
 2 
 3     public Person() {
 4         System.out.println("我是一个人类");
 5     }
 6 
 7     public static void person1() {
 8         System.out.println("父类的方法");
 9     }
10 
11 }
12 
13 
14 public class Xiaoming extends Person {
15 
16     public Xiaoming() {
17         System.out.println("我是小明");
18         super.person1();  //  调用父类的方法需要使用 super
19     }
20 
21     public static void main(String[] args) {
22         Xiaoming xiaoming = new Xiaoming();
23     }
24 
25 }

 

(3)super的使用语法是 " super. " 或者 " super() " ;

(4)super在构造函数中只能是在首行,这点和 this 相同 , 当创建子类对象时, 需要先初始化父类;

 1 public class Person {
 2     
 3     public Person() {
 4         System.out.println("我是一个人类");
 5     }
 6 
 7 }
 8 
 9 public class Xiaoming extends Person {
10 
11     public Xiaoming() {
12         System.out.println("我是小明");
13     }
14 
15     public static void main(String[] args) {
16         Xiaoming xiaoming = new Xiaoming();
17     }
18 
19 }
20 
21 输出:
22 我是一个人类
23 我是小明
24 
25 Process finished with exit code 0

 

(5)如果在构造函数中没有显示地写出 super , 则会默认有一个 super() ;

(6)super 不能出现在静态方法中;

    当我们在静态方法中使用super() 时,便会报错

1     public static void person1() {
2         super();   //  错误写法
3         System.out.println("父类的方法");
4     }
5 
6 }