当前位置:编程学习 > wap >>

OBJ-C上的“多态”真的仅仅是指不同的类可以有相同的方法名称吗?

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


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

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


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


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

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

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


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

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


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



--------------------编程问答-------------------- 如果英文好点 还是建议你看苹果的开发者网站上面讲的objc2.0吧 国内翻译过来的东西 好多会有这种弄不清楚的概念.....
补充:移动开发 ,  iPhone
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,