黑马程序员技术交流社区
标题:
多态
[打印本页]
作者:
dawn.dai
时间:
2014-4-24 23:18
标题:
多态
能不能举个例子说明一下多态的好处,什么情况下用多态?
作者:
魅影穿眸
时间:
2014-4-24 23:32
多态性(polymorphism)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。不同对象以自己的方式响应相同的消息的能力叫做多态。意思就是假设生物类(life)都用有一个相同的 方法-eat; 那人类属于生物,猪也属于生物,都继承了life后,实现各自的eat,但是调用是我们只需调用各自的eat方法。 也就是不同的对象以 自己的方式响应了相同的消息。
多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。
作者:
gaoxinglei123
时间:
2014-4-24 23:40
多态指同一种操作作用于不同的对象,产生不同的结果。举个栗子。当函数的形式参数为父类。你就可以传入不同子类对象来使用不同子类的方法和属性。貌似越来越迷糊了?,,诶 表达能力有限。。。
作者:
李烨
时间:
2014-4-24 23:45
void feed(Animal *a)
{
[a eat];
}
int main( )
{
Animal *aa = [Animal new];
feed(aa);
Dog *dd = [Dog new];
feed(dd);
return 0;
}
复制代码
Animal类和Dog类我就不写了,Dog类继承Animal类
如果用有一个Cat类继承Animal,那么cat的对象也可以调用feed函数
这样就可以看出多态的好处:上面的feed函数,如果参数中使用的是父类类型,可以传入父类、子类对象
作者:
恣意
时间:
2014-4-25 16:26
假设设计一个绘图软件,所有的图形都继承于基类Shape,每种图形都有自己特定的绘制方法draw来实现。如果要显示所有图形,则可以创建一个基类Shape的集合,其元素分别指向个子类对象,然后循环调用父类类型对象的绘制方法,实际绘制根据当前赋值给她的子对象调用各自的绘制方法。如果要增加图形,只需要增加新的子类,并实现其绘制方法即可。
作者:
gmadong@163.com
时间:
2014-4-25 21:29
本帖最后由 gmadong@163.com 于 2014-4-25 21:34 编辑
在oc中多态就是不同对象对同一消息的不同响应
//定义一个人的类再定义一个方法
@interface Person : NSObject
-(void)eat;
@end
//在学生类中你可以重写“吃”的方法也可以不重写(不重写那跟父类的吃的行为一样,而重写又可以写自己特有的)
//好处:多态使项目的代码重用和提高程序的扩展性
@interface Student : Person
@end
作者:
李鹏-ios
时间:
2014-4-26 23:18
多态其实就是通过继承实现的不同对象调用相同的方法,表现出不同的行为的一种设计模式。通过继承的方式,子类会实现或重新父类的方法,不同的子类可以在各自的相同方法中有不同的代码内容。如父类是duck中有jiao()这个方法,如果两个不同的鸭子子类,实现的jiao()这个方法可以是不同的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2