“polymorphism(多态)”一词来自希腊语,意为“多种形式”.多数java程序员把多态看作对象的一种能力,使其能调用正确的方法版本.尽管如此,这种面向实现的观点导致了多态的神奇功能,胜于仅仅把多态看成纯粹的概念.
【程序编程相关:TPanel 在使用 Theme Ser】 【推荐阅读:UNIX痛恨者手册[转贴自 FreeBS】 java中的多态总是子类型的多态.几乎是机械式产生了一些多态的行为,使我们不去考虑其中涉及的类型问题.本文研究了一种面向类型的对象观点,分析了如何将对象能够表现的行为与对象即将表现的行为分离开来.抛开java中的多态都是来自继承的概念,我们仍然可以感到,java中的接口是一组没有公共代码的对象共享实现. 【扩展信息:通过 OLE DB 连接 MSSQL S】 多态的分类 多态在面向对象语言中是个很普遍的概念.虽然我们经常把多态混为一谈,但实际上有四种不同类型的多态.在开始正式的子类型多态的细节讨论前,然我们先来看看普通面向对象中的多态. luca cardelli与peter wegner("on understanding types, data abstraction, and polymorphism"一文的作者, 文章参考资源链接)把多态分为两大类----特定的与通用的----四小类:强制的,重载的,参数的与包含的.他们的结构如下: 在这样一个体系中,多态表现出多种形式的能力.通用多态引用有相同结构类型的大量对象,他们有着共同的特征.特定的多态涉及的是小部分没有相同特征的对象.四种多态可做以下描述: 强制的:一种隐式做类型转换的方法. 重载的:将一个标志符用作多个意义. 参数的:为不同类型的参数提供相同的操作. 包含的:类包含关系的抽象操作. 我将在讲述子类型多态前简单介绍一下这几种多态. 强制的多态 强制多态隐式的将参数按某种方法,转换成编译器认为正确的类型以避免错误.在以下的表达式中,编译器必须决定二元运算符‘+’所应做的工作: 2.0 + 2.0 2.0 + 2 2.0 + "2" 第一个表达式将两个double的操作数相加;java中特别声明了这种用法. 第二个表达式将double型与int相加.java中没有明确定义这种运算.不过,编译器隐式的将第二个操作数转换为double型,并作double型的加法.做对程序员来说十分方便,否则将会抛出一个编译错误,或者强制程序员显式的将int转换为double. 第三个表达式将double与一个string相加.java中同样没有定义这样的操作.所以,编译器将double转换成string类型,并将他们做串联. 强制多态也会发生在方法调用中.... 下一页