日期:2014-05-20  浏览次数:20663 次

求解多态
看了一遍书,书上就一句多态是一段程序在不同环境中有不同的语义解释。然后就是多态数组,和多态参数两个实例,我实在吃不透他,请各位朋友帮忙解释一下好吗?
多态

------解决方案--------------------
大圈套小圈的原理

假如声明时用的是动物

传的是猫是狗没有关系 只要是动物就行

!!!!
------解决方案--------------------
重写(Override)和重载(overload)都是多态的表现

重写是指子类重写父类的方法,或者实现类重写接口的方法,这样子类和父类的同一方法就会有不同的逻辑,是多态;

而重载是在同一个类里,方法名相同参数不同,这也是多态。

------解决方案--------------------
动物 相当于父类
猫 狗 都属于动物  是动物的子类

如果在一个方法中形参部分指定一个动物类型也就是父类型的参数,那么你传的时候就可以传递 或者 猫 或者狗 
这些动物的子类类型

且父类型一般都是抽象的 就像一个人说 动物 你脑海中会有一个动物 的具体体现嘛 不要告诉我猫 或者 狗  

因为那些不是动物类型的  它们都是动物类型的具体实现类型(子类型) 而且不管你想的是猫 还是狗 你肯定都会想到这些,因为他们具有动物的特征 这就是多态了
 提到(声明)一个父类类型,而想到(实际传入)的确是父类的子类实现类型,而且子类实现类型可以有很多种(猫,狗) 只要它们是父类类型这个体系的(继承自父类,符合一种 is a 的关系 例如 狗 是一个动物)

其实,我们仨生活中还是有很多例子的 比如你渴了 想喝水吧
那么你会去管别人给你的是白开水还是矿泉水嘛
不管哪种水 只要你看到是能解渴的水 你就会喝掉吧

程序中也是这样的 需要一种类型的东西去解决一个问题(水)
程序不会去管你是用什么东西解决的这个问题(别人给你的东西)
只要能解决问题就可以 这就是面向对象的好处了!!!

个人的小小体会,希望可以对楼主有所帮助!!!