多态

一个对象变量可以指示多种实际类型的现象称为多态;在运行过程中能够自动选择调用哪个方法的现象称为动态绑定。

  • 基本概念

继承层次:由一个公共超类派生出来的所有的类的集合称为继承层次;

继承链:从某个特定子类出发到其祖先的路径称为继承链。

  • 对象变量是多态的

置换法则:一个父类变量可以引用子类对象;

例如:

Manager boss = new Manager("Carl Cracker", 80000, 1987, 12, 15);

Employee[] staff = new Employee[3];
staff[0] = boss;                //多态
staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1);
staff[2] = new Employee("Tommy Tester", 40000, 1990, 3, 15);

此时编译器将staff[0]看作Employee,若调用Manager方法,则会报错,如下:

staff[0].setBonus(5000);        //error
  • 对象引用

超类变量可以引用子类对象;

子类变量不能引用超类对象,因为子类方法可能多于超类,若对超类调用了子类才有的方法,必然不合理;

超类数组引用子类数组,而不需要强制转换;

你可能感兴趣的:(多态)