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