站长原创,版权所有ITEEDU,2009-9-30
多态即一个类的实例可以变成多种类型的对象实例,即一个对象可以有多种形态。
为什么一个对象要变成另外的类型的对象呢?因为java是一门强制类型的语言,函数传递的参数是有指定类型的。那么怎样让一个函数处理不同类型的对象呢?这就是多态的作用,让一个对象可以变形态,并且可以保证调用正确的方法。
原则:
*类只能转换成其父类或其本身和其父类实现的接口。能用接口不用类。
*方法总执行覆盖链上的最后一个方法。
*对象可调用的属性只限于继承链中对象当前处于的类型和上游类型的接口中的属性,上游方法可顺覆盖链回溯到覆盖链终端执行最终方法。
应用:
假设函数的传入是通过一个通道完成的,只有和通道形状相同的对象(类型相同)才可传入,那么要想将一个形态不同的对象传入这个函数就要强制改变其形状,并且调用的方法还要正确有,这时就用多态了。
在同一段程序中将一个对象的类型强制变来变去,在java中是没有意义的。
例子:
所有的鸟都有翅膀,都要有飞的动作,在所有鸟类都实现的接口中应有一个fly()方法,所以在各种鸟的类中必有一个fly()的具体实现。
现做一个函数可以让所有的鸟实例做飞的动作,那么参数设置什么类型呢?应该设置为所有鸟的实例都可转换到的一类型(形态)――定义了fly()方法的那个接口。