美文网首页
OC之多态

OC之多态

作者: IThai | 来源:发表于2018-03-16 11:46 被阅读0次

OC之多态:

多态是什么?一个类的多种形态。你可以认为就是孙悟空和他的分身。
为什么要 分身,一个人做不到啊。

  • 比如,你自定义了一个view叫做BBview(爸爸视图),你用他来实现放大缩小,点击翻转。现在,你又需要一个view来实现只能上下方向放大缩小。然后,你还需要一个view来实现即能点击翻转,还能3d折叠。 那么你要怎么做呢?
  • 直接在BBview中加入一个3d折叠的方法,然后给三个方法分别开放enable的属性吗?用哪个让哪个enable?
    好像也可以哦。是不是傻?这就好像你本来在煮饭,然后让你再去买菜,和打酱油。你都可以做到,但是,为什么不生个孩子呢?一个不行,生俩啊。孩子A只要会打酱油,孩子B去买菜。多好。
    到项目中,也是。如果你的项目中之前一直是只有BBview,现在你突然加了个新方法,又给了3个enable的属性,那你不得去遍历之前用过这个BBview的地方,都去enable那三个属性吗?直接写个新的类出来继承,然后添加新方法,覆写旧方法,多好。

多态,就是继承一个父类,覆写父类的旧方法,当然新写的这个类,也可以加些新方法。
继续上边假设的情景:
BBview有俩方法,-(void)didScal; -(void)didOvertrun;
新加俩类,
Aview,覆写方法(-(void)didScal;)。-(void)didAScal;
Bview,覆写方法(-(void)didOvertrun;)。-(void)didBOverTrun;
添加新方法。-(void)3dtransform;
场景应用:
原来的使用:(之前项目中,某控制器下,使用旧的BBview,实现缩放,翻转)
[[BBview class] didScal];
[[BBview class] didOvertrun];
现在,你又需要一个view来实现只能上下方向放大缩小:
BBview *aView = [Aview new];
[Aview didAScal];
然后,你还需要一个view来实现即能点击翻转,还能3d折叠。
BBview bView = [Bview new];
[bView didBOverTrun];
[(Bview
)bView 3dtransform];//此处需要注意,必需强转类型,因为,在父类中,没有3dtransform这个方法。

OK,至此,多态的情况大致明了。
现在,你既可以保证旧项目不改动,又可以满足新的需求。是不是就像在版本迭代呢?是的,多态就好像是在帮你的代码进行迭代一样,即扩展了你之前的类的方法,也保证了旧的存在。让你原本就已千疮百孔的代码还能继续匍匐前行。没有错,这也是多态的优点之一哦。

相关文章

  • iOS 语言三大特性

    封装 、 继承、多态OC学习篇之---类的三大特性(封装,继承,多态) - Android应用安全防护和逆向分析-...

  • OC面向对象—多态

    OC面向对象—多态 OC面向对象—多态 一、基本概念 多态在代码中的体现,即为多种形态,必须要有继承,没有继承就没...

  • OC多态 - OC

    什么是多态:不同的对象以自己的方式响应相同名称方法的能力称为多态(父类指针指向子类对象) 多态的条件:有继承关系、...

  • OC多态

    面向对象的三大特性: 封装继承与多态;封装是对类中的一些字段, 方法进行保护, 不被外界所访问到, 有一种权限控制...

  • OC多态

    什么是多态:不同的对象以自己的方式响应相同名称方法的能力称为多态(父类指针指向子类对象)多态的条件:有继承关系、有...

  • OC:多态☀️

    版权声明:本文为博主原创文章,未经博主允许不得转载。 1、多态 父类指针指向子类对象 属性:封装了setter ...

  • OC -- 多态

    多态:同一种类型 具有多种的表现形态 多态的条件:必须存在继承关系子类重写父类的方法❗️父类声明的变量指向子类对象...

  • OC多态

    多态往简单来说就是父类的指针指向子类的对象。 //父类 @interfacesuperColor :NSObjec...

  • 多态

    OC面向对象—多态 一、基本概念 多态在代码中的体现,即为多种形态,必须要有继承,没有继承就没有多态。 在使用多态...

  • OC的简单总结

    一.OC的三大特性 封装、继承、多态 1> 什么是多态 多态:不同对象以自己的方式响应相同的消息的能力叫做多态。 ...

网友评论

      本文标题:OC之多态

      本文链接:https://www.haomeiwen.com/subject/myrhqftx.html