Java中的super关键字
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 }