多态:多态指的是编译时类型变化,而运行时类型不变。 多态分两种: ① 编译时多态:编译时动态重载; ② 运行时多态:指一个对象可以具有多个类型。 对象是客观的,人对对象的认识是主观的。 例: Animal a=new Dog();查看格式名称; Dog d=(Dog)a。声明父类来引用子类。 (思考上面的格式) 运行时多态的三原则:(应用时为覆盖) 1、 对象不变;(改变的是主观认识) 2、 对于对象的调用只能限于编译时类型的方法,如调用运行时类型方法报错。 在上面的例子中:Animal a=new Dog();对象a的编译时类型为Animal,运行时类型为dog。 注意:编译时类型一定要为运行时类型的父类(或者同类型)。 对于语句:Dog d=(Dog)a。将d强制声明为a类型,此时d为Dog(),此时d就可以调用运行时类型。注意:a和d指向同一对象。 3、 在程序的运行时,动态类型判定。运行时调用运行时类型,即它调用覆盖后的方法。 |