重载允许用相同的运算符或方法,去表示截然不同的意义。‘+’在上面的程序中有两个意思:两个double型的数相加;两个串相连。另外还有整型相加,长整型,等等。这些运算符的重载,依赖于编译器根据上下文做出的选择。以往的编译器会把操作数隐式转换为完全符合操作符的类型。虽然Java明确支持重载,但不支持用户定义的操作符重载。 Java支持用户定义的函数重载。一个类中可以有相同名字的方法,这些方法可以有不同的意义。这些重载的方法中,必须满足参数数目不同,相同位置上的参数类型不同。这些不同可以帮助编译器区分不同版本的方法。 编译器以这种唯一表示的特征来表示不同的方法,比用名字表示更为有效。据此,所有的多态行为都能编译通过。 强制和重载的多态都被分类为特定的多态,因为这些多态都是在特定的意义上的。这些被划入多态的特性给程序员带来了很大的方便。强制多态排除了麻烦的类型和编译错误。重载多态像一块糖,允许程序员用相同的名字表示不同的方法,很方便。 参数的多态 参数多态允许把许多类型抽象成单一的表示。例如,List抽象类中,描述了一组具有同样特征的对象,提供了一个通用的模板。你可以通过指定一种类型以重用这个抽象类。这些参数可以是任何用户定义的类型,大量的用户可以使用这个抽象类,因此参数多态毫无疑问的成为最强大的多态。 乍一看,上面抽象类好像是java.util.List的功能。然而,Java实际上并不支持真正的安全类型风格的参数多态,这也是java.util.List和java.util的其他集合类是用原始的java.lang.Object写的原因(参考我的文章"A Primordial Interface?" 以获得更多细节)。Java的单根继承方式解决了部分问题,但没有发挥出参数多态的全部功能。Eric Allen有一篇精彩的文章“Behold the Power of Parametric Polymorphism”,描述了Java通用类型的需求,并建议给Sun的Java规格需求#000014号文档"Add Generic Types to the Java Programming Language."
class 房屋//房屋基类
{
方法1 房屋类型;//不详
方法2 房屋外观;//不详
方法3 房屋内部分配;//不详。
}
class 我的房屋 extends 房屋//也可以是实现接口类来实现多态,很多在此仅简单举例,不详解
{
方法1 房屋类型;//在这个方法体中尽情描述你的房屋,基本的就是民居了。
方法2 房屋外观;//公寓,别墅,四合院,随你高兴。
方法3 房屋内部分配;//客厅 厨房卫生间书房卧室...书架位置,鱼缸位置电视冰箱位置等等。
方法4 房屋装修;
方法5 .....}
呵呵经过上述工程,概念里的房屋在子类我的房屋中具体为按照你的意愿具体细化特有的房屋。当然子类仍然处于图纸规划阶段,实例化以后放在堆内存里可以用了。
参考《今天你多态了吗》
比较有意思。