父类型的引用指向子类型对象即是:向上转型又被称作,自动类型转换.
程序分两个阶段:编译阶段,运行阶段。
例如:
//父类 Animal和子类Cat
Animal a1 = new Cat();
程序编译阶段只知道a1是一个Animal类型。程序在运行的时候堆中的实际对象是Cat类型。
假设父类 Animal和子类Cat中均有eat方法,那么
//程序在编译阶段a1被编译器看做Animal类型.
//所以程序在编译阶段a1引用绑定的是Animal类中的eat方法.(静态绑定)
//程序在运行的时候堆中的对象实际上是Cat类型,而Cat已经重写了eat方法。
//所以程序在运行阶段对象的绑定的方法是Cat中的eat方法.(动态绑定)
|