5.1.1 定义子类
extends
5.1.2 覆盖方法
super
5.1.3 子类构造器
package chapter05;import chapter04.Employee;public class Manager extends Employee {private double bonus;public Manager(String n, double s, int year, int month, int day) {// super() 必须是第一句super(n, s, year, month, day);bonus = 0;}public void SetBonus(double b) {bonus = b;}public double GetSalary() {return super.GetSalary() + bonus;}}
5.1.4 继承层次

5.1.5 多态
- is-a
- 替换原则
- 程序中出现超类对象的任何地方都可以使用子类对象替换


5.1.6 理解方法调用
- 可协变的返回类型
- 动态绑定
- 静态绑定
5.1.7 阻止继承: final 类和方法
final 类不能被继承:
- 该类的字段不是 final
- 该类的方法都是 final
package chapter05;public final class Executive {...}
final 方法不能被覆盖:
package chapter05;public class Executive {private String name;public final String getName() {return name;}}
5.1.8 强制类型转换
将某个类的对象引用转换成另外一个类的对象引用.
Manager boss = (Manager) staff[0];
在转换之前使用 instanceof:
if (staff[1] instanceof Manager) {boss = (Manager) staff[1];...}
5.1.9 抽象类
包含一个或多个抽象方法的类本身必须被声明为抽象:
package chapter05;public abstract class Person {private String name;public abstract String getDescription();}
class Student extends Person {private String major;public Student(String n, String m) {super(n);major = m;}public String getDescription() {return "a student majoring in " + major;}}
5.1.10 受保护访问
子类不能访问父类的 private 字段.
- proteced 字段只能在同一包/子类中访问
访问控制总结:

