java的多态性主要体现在两个方面:
1、方法的覆写和重载
2、对象的多态性
而对象的多态性又分为向上转型和向下转型
向上转型的格式:
父类 父类对象=子类实例;
向下转型的格式:
子类 子类对象=(子类) 父类实例;
再来说说为什么向上转型是自动完成,而向下转型是需要强类型转换的:
对象的多态性主要是子类和父类之间(也就是发生在继承的基础之上的),因为父类的属性和方法会被子类继承(当然私有的属性和方法除外),那么发生向上转型时候,当然是可以完成的,父类所需要的一些方法或者属性,子类都能够满足,所以是自动完成的;
有了这些,就不难理解为什么向下转型是需要强类型转换的:
因为子类不仅继承了父类的方法和属性,也会有自己的一些扩展(有自己的方法和属性),所以子类通过父类实例化。父类不一定满足子类所有需求,这就需要强类型转换
以上纯粹为个人理解,不当之处,各位帮忙纠正下,谢谢! |
|