子类构造器

现在有两个类,Employee和Manager,其中Employee是父类,Manager是子类

public class Employee{
      private String name;
      private double salary;
      public Employee(String name,double salary){
            this.name = name;
            this.salary = salary;
      }
}
public class Manager extends Employee{
      private double bonus;
      public Manager(String name,double salary){
            super(name,salary);
            bonus = 0;
      }
}

这里的关键字super具有不同的含义.super(name,salary)是调用父类Employee中含有name和salary参数的构造器的简写形式.

由于Manager类的构造器不能访问Employee类的私有域,所以必须利用Employee类的构造器对这部分私有域进行初始化,我们可以通过super实现对父类构造器的调用.使用super调用构造器的语句必须是子类构造器的第一条语句

如果子类的构造器没有显示地调用父类的构造器,则将自动调用父类默认(没有参数)的构造器.如果父类没有不带参数的构造器,并且在子类的构造器中又没有显示地调用父类的其他构造器,则Java编译器将报错

原文地址:https://www.cnblogs.com/liuzhidao/p/13707719.html