欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

obj-c上的“多态”真的仅仅是指不同的类可以有雷同的方法名称吗

更新时间: 2014-01-05 02:36:35 责任编辑: Author_N1

 

OBJ-C上的“多态”真的仅仅是指不同的类可以有相同的方法名称吗?
我看到OBJ-C多态的定义是:
Obiective-C中实现“多态”相同的名称、不同的类。使不同的类共享相同的方法名称的能力。
/* 举个栗子:
Fraction类有print方法
Complex类有print方法
他们都有相同的print方法,但他们是不同的类
这就叫作多态
CAO!是这样理解吗?
*/


TMD我真的想确定一下,是我理解错了,还是真的这样?

从其它编程语言上,多态一般是指:
同个类,有多个相同的名称的方法,但是,他们的签名不同。
调用该方法时,会根据方法参数自动匹配不同的方法。
这才叫多态。


WTH?but.....OBJ-C的这种所谓的多态,只是指不同的类,但他们分别可以用一样方法名称。
那这叫什么多态,完全没有意义的多态!
--参考方法--
引用
同个类,有多个相同的名称的方法,但是,他们的签名不同。
调用该方法时,会根据方法参数自动匹配不同的方法。
这才叫多态。


概念上你应该是理解错了,针对上面的这句话,在其它编程语言中,这不叫“多态”,应该叫“方法的重载”
如果是问“重载”的话,我可以告诉你,在objective-c中没有方法的“重载”

再说一下“多态”的概念。多态体现在类继承,是指多个子类同时继承同一个父类。在某些场合子类需要以父类的身份出现。比如在某些设计模式中,需要在运行时动态实例化某个类,而在类代码中,我们不知道最终实例的是哪个类,这时我们需要用父类来占位。这种情况下我们称之为多态。


--参考方法--

不知道你从哪里看到的例子。多态是跟语言无关的。
--参考方法--
引用:
引用
同个类,有多个相同的名称的方法,但是,他们的签名不同。
调用该方法时,会根据方法参数自动匹配不同的方法。
这才叫多态。


概念上你应该是理解错了,针对上面的这句话,在其它编程语言中,这不叫“多态”,应该叫“方法的重载”
如果是问“重载”的话,我可以告诉你,在objective-c中没有方法的“重载”

再说一下“多态”的概念。多态体现在类继承,是指多个子类同时继承同一个父类。在某些场合子类需要以父类的身份出现。比如在某些设计模式中,需要在运行时动态实例化某个类,而在类代码中,我们不知道最终实例的是哪个类,这时我们需要用父类来占位。这种情况下我们称之为多态。


请区分重载(overload)和覆盖(override) 。



上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:36:35
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/12025/
本文WWW.DOC100.NET DOC100.NET版权所有。