美文网首页IOS开发基础(oc)
ios开发基础学习笔记(三)--多态

ios开发基础学习笔记(三)--多态

作者: miloluo | 来源:发表于2018-05-07 22:54 被阅读0次

           大家好,我是milo,这次的文章讲的是----多态。我们知道面向对象的三大特征分别是,封装,继承,多态。在这三个特征中,多态的出现是最少的,但就因为出现次数最少,所以需要时常巩固巩固。

            在面向对象中(不光是oc语言),多态的出现需要满足三个条件:

           1、必须要有继承关系

           2、子类要重写父类的方法

           3、父类指针指向子类对象

           下面将通过一个例子,和一个使用场景来巩固多态的思想。

    -------------------------------------------------------------------------------------------

    例子部分:

            创建一个动物类JJAnimal,里面只有一个eat的方法,下图是eat的实现。

    JJAnimal

             创建一个狗类JJDog,继承动物类JJAnimal,JJDog就会继承JJAnimal的eat方法。重写JJDog的eat的如下:

    JJDog

            开始实现,使用JJAnimal指针指向JJDog对象,然后,JJDog调用eat方法。

    实现部分

            结果如下,使用多态后子类调用的方法,是子类重写过后方法。即不是“动物 吃”,是“小狗 吃”。

    打印结果

    -------------------------------------------------------------------------------------------

    使用场景部分:

            很多人会问了,多态的使用这么奇怪,真的有应用场景吗?有的,下面就延续上面的动物类,狗类的例子,接着将多态代入使用场景。

            使用场景是:有一个管理员,他有一个给动物喂食的方法,动物当然包括狗啊,猫啊,大象啊。。。等等各类动物。他应该怎么设计这个方法?是不是要给每一种动物,都设计一个方法,是像下面这样子吗?

    没有使用多态

            为了让我们的代码更高效,简洁,我们应该使用多态的思想,即只需像下图那样设计方法。管理员类JJManager,只有一个feed方法,参数是JJAnimal,当我们在外部传入不同的动物作为参数时,就已经满足了多态的三个条件:1、继承,2、重写,3、父类指针指向子类对象

    使用多态

            在外面实现并且调用

    实现

            结果如下:

    打印结果

            使用多态后,无论是小猫,小狗,小猴。。。还是什么动物,只需要子类进行相应方法的重写后,就可以非常简洁地使用[manager feed:某某动物]一句代码,搞定一切!

    相关文章

      网友评论

        本文标题:ios开发基础学习笔记(三)--多态

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