关键字super

在Java类中使用super来引用父类的成分
  super可用于访问父类中定义的属性
  super可用于调用父类中定义的成员方法
  super可用于在子类构造方法中调用父类的构造方法
  super的追溯不仅限于直接父类

关键字 super举例
public class Person {
  private String name;
  private int age;
  public String getInfo() {
    return "Name: " + name + "\nage: " + age;
  }
}

public class Student extends Person {
  private String school = "New Oriental";
  public String getSchool() { return school; }
  public String getInfo() {
    // 调用父类的方法
    return super.getInfo() +"\nschool: " +school;
  }
}

构造方法不能继承

子类继承父类所有的成员变量和成员方法,但不继承父类的构造方法
在一个Java类中可以通过两种方式获得构造方法
  使用系统默认的无参数构造方法
  显式定义一个或多个构造方法
一旦显式定义了构造方法,则系统不再提供默认构造方法

调用父类构造方法

在子类的构造方法中可使用super(参数列表)语句调用父类的构造方法
如果子类的构造方法中没有显示地调用父类构造方法,也没有使用this关键字调用重载的其它构造方法,则系统默认调用父类无参数的构造方法
如果子类构造方法中既未显式调用父类构造方法,而父类中又没有无参的构造方法,则编译出错

调用父类构造方法举例 (1)

public class Person {
  private String name;
  private int age;
  private Date birthDate;

  public Person(String name, int age, Date d) {
    this.name = name;
    this.age = age;
    this.birthDate = d;
  }
  public Person(String name, int age) {
    this(name, age, null);
  }
  public Person(String name, Date d) {
    this(name, 30, d);
  }
  public Person(String name) {
    this(name, 30);
  }
  // ……
}

调用父类构造方法举例 (2)

public class Student extends Person {
  private String school;

  public Student(String name, int age, String s) {
    super(name, age);
    school = s;
  }
  public Student(String name, String s) {
    super(name);
    school = s;
  }
  public Student(String s) {
    // 编译出错: no super(),系统将调用父类无参数的构造方法。
    school = s;
  }
}

子类对象的实例化过程

super(…)和this(…)调用语句不能同时在一个构造函数中出现

super(…)或this(…)调用语句只能作为构造函数中的第一句出现

最新文章

  1. 看 nova-scheduler 如何选择计算节点 - 每天5分钟玩转 OpenStack(27)
  2. imx6 gpio irq
  3. 查询MYSQL和查询HBASE速度比较
  4. composer很慢修改镜像
  5. 【linux】top命令详解
  6. 读《JavaScript语言精粹》的一些感言
  7. HTML5吧
  8. Linux下安装Nginx1.9.3-0303(本人亲手实践)
  9. C++中的static关键字的总结 (转载)
  10. ubuntu安装hadoop 若干问题的解决
  11. Eureka服务配置与进阶
  12. loj2880「JOISC 2014 Day3」稻草人
  13. 说一说MVC的CSRF(三)
  14. 快速获取IP地址的各种方法
  15. DedeCMS上传视频
  16. React Native升级目标SDK
  17. js中获取当前浏览器类型
  18. Java Applet小应用
  19. jenkins 定时构建 位置
  20. 【C#】事件(Event)和代理/委托(Delegate)

热门文章

  1. How-to: Tune Your Apache Spark Jobs (Part 1)
  2. [转]采购文件中 RFI、RFQ、RFP、IFB的区别
  3. python2 除法保留两位小数
  4. pyv8使用总结
  5. hdu26道动态规划总结
  6. MongoDB学习之(三)增删查改
  7. 编程精粹--编写高质量C语言代码(1):假想编译程序
  8. 【翻译自mos中文文章】重建控制文件的方法
  9. 【C#/WPF】ListView的MVVM例子,及禁止拖动ListView的头部Header
  10. C语言 · 报时助手