多态
2020-07-21 09:53:27 0 举报
AI智能生成
多态特性在Java
作者其他创作
大纲/内容
将What(是什么)从how中剥离出来
增加的程序可扩展性
只作用于行为,不能用于属性
同一个行为,不同的子类表现出不同的行为/形态
Polymorphism is the ability of an entity
to take several forms.
to take several forms.
多态来自于继承特性
来源于继承机制允许不但能将对象视其为本身,
而且能视为其基础类型(Base Type)
而且能视为其基础类型(Base Type)
实现
有继承
子类override父类的方法
父类引用指向子类对象
等号左侧: 编译器类型
early binding
等号右侧:运行时类型
等号右侧:运行时类型
late binding/dynamic bindng
除非声明为final,均可以后期绑定
final的目的
防止篡改
告知编译器,不需要后期绑定
实际发生了 Upcast
父类当方法的形参,然后传入子类的对象,
然后调用同一方法,根据传入子类的不同展现不同行为,
构成多态。
然后调用同一方法,根据传入子类的不同展现不同行为,
构成多态。
类型
静态(Static Polymorphism)
during compile time => Mothod overloading
动态(Dynamic Polymorphism)
during run time => overriden mothod
优势
支持动态绑定
提高代码的扩展性
符合OOP的Open-Close(开闭原则)
扩展开放
修改关闭
多态可以提高扩展性,但扩展性没有达到最好(参考反射)
0 条评论
下一页
为你推荐
查看更多