继承
什么是继承?
继承的基本思想是,可以基于已有的类创造新的类。
继承已存在的类就是复用(继承)这些类的方法,而且可以增加一些新的方法和字段,使新类能够适应新的的情况
类、超类(父类)、子类
举例:公司包括普通员工和经理,不同的是经理除了会和普通员工一样的基本薪资以外,完成某一业绩还会有额外的奖金,故创建两个类;
1、Manager类与Employee类 两者存在明显的“is-a”关系,即每个经理都是一个员工。
2、使用关键字extends表示继承
3、在子类Manager中添加奖金字段
public class Employee{
private static int nextId;
private int id;
private String name = "";
private double salary;
public static int getNextId() {
return nextId;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public double getSalary() {
return salary;
}
}
public class Manager extends Employee{
private double bouns;
public double getSalary(){
double baseSalary = getSalary();
return baseSalary + bouns;
}
}
尽管在Manager类中没有显示的定义getName()等方法,但是可以对Manager对象使用这些的方法,因为自动继承了Employee中的方法。
覆盖方法
当子类和父类中拥有相同名字的方法。如上,当我们希望调用Employee中的getSalary()方法,而不是Manager中的,可以使用关键字super
public double getSalary(){
double baseSalary = super.getSalary();
return baseSalary + bouns;
}
最后,我们来提供一个构造器
public Manager(String name, double salary, int year, int month, int day){
super(name, salary, year, month, day);
bouns = 0;
}
如上:此处关键字super的含义是调用超类(父类)中的含有name等参数的构造器;
总结
关键字this有两个含义:1、指示隐式参数的引用;2、调用该类的其他构造器;
关键字super两个含义:1、调用超类(父类)的方法;2、调用父类的构造器