Java之super关键字

Posted zengblogs

tags:

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

super关键字概述:

1.在Java类中使用super来调用父类中的指定操作。

2.super可用于访问父类中定义的属性。

3.super可用于调用父类中定义的成员方法。

4.super可用于在子类构造器中调用父类的构造器。

注意事项:

1.尤其当子父类出现同名成员时,可以用super表明调用的是父类中的成员。

2.super的追溯不仅限于直接父类。

3.super和this的用法相像,this代表本类对象的引用,

super代表父类的内存空间的标识。 

 1 class Person {
 2     protected String name ="张三";
 3     protected int age;
 4 
 5     public String getInfo(){
 6         return "Name:" + name + " 
age:" + age;
 7     }
 8 }
 9 
10 class Student extends Person{
11     protected String name = "李四";
12     private String school = "New Oriental";
13     public String getSchool(){
14         return school;
15     }
16 
17     public String getInfo(){
18         return super.getInfo() + "
school: "+ school;
19     }
20 }
21 
22 public class StudentTest{
23     public static void main(String[] args) {
24         Student st = new Student();
25         System.out.println(st.getInfo());
26     }
27 }

调用父类构造器:

1.子类中所有的构造器默认都会访问父类中空参数的构造器。

2.当父类中没有空参数的构造器时,子类的构造器必须通过this(参数列表)

或者super(参数列表)语句指定调用本类或者父类中相应的构造器。

并且只能”二选一”,还必须放在构造器的首行。

3.如果子类构造器中既未显式调用父类或本类的构造器,且父类中

又没有无参的构造器,则编译出错。

 1 public class Person{
 2     private String name;
 3     private int age;
 4     private Date birthDate;
 5 
 6     public Person(String name, int age, Date d){
 7         this.name = name;
 8         this.age = age;
 9         this.birthDate = d;
10     }
11 
12     public Person(String name, int age){
13         this(name, age, null);
14     }
15 
16     public Person(String name, Date d){
17         this(name, 30, d);
18     }
19 
20     public. Person(String name){
21         this(name, 30);
22     }
23     
24 }

this和super对比:

技术图片

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

java之this,super和代码块精选

Java之super关键字

java基础之super关键字

Java8基础之super关键字

Java基础之this和super关键字用法

java关键字之super