Java SE 多态
1.多态
Java引用变量有两个类型:一个是编译时类型,一个是运行时类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。如果编译时类型和运行时类型不一致,就可能出现多态。
当调用方法时,(多态)对象的方法行为总是表现出子类方法的行为特征,而不是父类方法的行为特征。
引用变量在编译阶段只能调用其编译时类型所具有的方法,但运行时则执行它运行时类型所具有的方法。因此,引用变量只能调用声明该变量时所用类里所包含的方法。
通过引用变量来访问其包含的实例变量时,系统总是试图访问它编译时类型所定义的成员变量,而不是它运行时类型所定义的成员变量。
2.引用类型的强制转换
引用类型的强制转换只能在具有继承关系的两个类型之间进行,如果把一个父类实例转换成子类类型,则这个对象必须编译时类型为父类类型,而运行时类型是子类类型。
当把子类对象赋给父类引用变量时,称为向上转型,这种转型总是可以成功的,这也从侧面证实了,子类是一种特殊的父类。