首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Polymorphism(多态)的了解

2012-11-06 
Polymorphism(多态)的理解? 多态也称为后期绑定(late binding),只要不是后期绑定就不是多态!? 所谓绑定就

Polymorphism(多态)的理解

? 多态也称为后期绑定(late binding),只要不是后期绑定就不是多态!

? 所谓绑定就是建立method call(函数调用)和method body(函数本体)的关联。绑定分为先期绑定和后期绑定,发生在程序执行之前的是先期绑定,过程式语言一定是先期绑定的;绑定动作在执行期才根据对象型别进行的是后期绑定。Java中的所有函数除了被声明为final和satatic外,皆为后期绑定,而且都是会自动发生的,可以这么理解“发送消息给某个对象,让该对象自行找到应该做的事就好了”。

? 显然可以推出成员变量和静态函数是不具有多态性的,因为它们在编译时绑定的。

? 说到多态我们不得不说两个概念 向上转型(upcasting)和向下转型(downcasting)

? 举个很简单的例子去理解多态? 向上转型? 向下转型

多????? 态:猫科动物有老虎?、狮子、猫等等

向上转型:老虎有猫科动物共有的特征(子类一定能转成父类类型)

向下转型:猫科动物不一定有老虎的本领(父类不一定能转成子类类型,有可能抛出异常)

Tiger WOWLion WOWCat WOWTiger is the king of the forest!Lion is the king of grassland!Cats is a human pet!

?? 注:Java里的每个转型动作都会被检查,所以即使看起来不过是圆括号表示的一般转型动作,执行时期却会加以检查以确保它的确是你所认知的型别,如果转型不成功,你便会受到ClassCastException,这一动作被称为“执行期型别辨别(run-time type identification,RTTI)。

热点排行