多态
一.相关定义
1-1 多态
多态是同一个行为具有多个不同表现形式或形态的能力。同一个形参类型为基类的接口,使用不同的子类的实例可以执行不同操作。
1-2 绑定
- 绑定:将一个方法调用和一个方法体关联起来被称作绑定;
- 前期绑定:若在程序执行前进行绑定(如果有的话,由编译器和连接程序实现);
- 后期绑定:在运行时根据对象的类型绑定,也叫做动态绑定或运行时绑定。
后期绑定的实现通常是在对象中安置某种“类型信息”,以便方法调用机制能知道对象是哪种类型,从而找到对应的方法体加以调用。
Java中除了static方法和final方法(private方法也属于final方法)之外,其他所有方法都是后期绑定。
1-3 总是调用最派生的方法
Java在使用基类引用调用方法时,总是调用最派生的方法。选取最派生方法的范围是:基类中的方法和基类引用指向的对象所在类中覆写的同名方法。即,如果基类引用所指向对象所在的类中未覆写基类中的方法,那么通过基类引用调用的将会是基类中的方法,否则调用的就是基类引用所指向对象所在类中覆写的方法。
package com.hutao.test.page155; import static com.hutao.util.Print.print; class BaseClass { public void method1(){ print("Base class"s method1 call method2"); method2(); } public void method2(){ print("Base class"s method2 was called"); } } class DerivedClass extends BaseClass{ @Override public void method2() { print("Derived class"s method2 was called"); } } public class Test{ public static void main(String[] args) { BaseClass baseClass = new DerivedClass(); //使用基类引用调用方法 baseClass.method1(); } }