黑马程序员技术交流社区

标题: 说说面向对象三大特性 [打印本页]

作者: 小叶子    时间: 2014-9-28 13:27
标题: 说说面向对象三大特性
本帖最后由 小叶子 于 2014-9-28 13:29 编辑

个人见解,欢迎指正,部分观点来自网上


三大特性分别为:封装,继承,多态


封装:
将相同功能的代码装在一段代码段里,或者将相同模型数据装在一个类里,就是封装.


封装能够避免外部函数,方法直接调用,访问封装块里面的成员变量.封装通常会留几个接口供外部函数调用,来实现某些功能或者调用某些成员变量.


封装的优点是减少代码耦合性,减少维护成本和增加代码重用~


继承: (顺便说下分类,组合)
继承是子类从一个基类的基础上,包含基类的[非私有]成员变量和方法,并在子类自身中拓展一些其他成员变量和方法.
继承的优点是当有许多不同的类需要包含同样的某些成员变量或方法时,将这些相同的成员变量和方法提取出来,放在一个基类中,其他类继承自这个基类,并根据自身需要在自身内部拓展成员变量和方法.能够有效减少代码重复性,增强可读性,提升性能.
继承的缺点:当父类的某个属性或参数修改后,子类必须在使用了父类该参数的地方做同样修改.子类和父类之间高度耦合,某种方面,背离了面向对象的思想.
子类拓展的方法属于子类自己.


分类:分类是在一个基类的基础上,拓展一些方法.这些方法属于基类本身.


组合:组合是一个A类将一个基类B的实例包含到A自己中.可以选择性的拥有某些成员变量或方法.而继承是完全拥有父类的非私有变量及方法.


为判断自己到底应该选用组合还是继承,一个最简单的办法就是考虑是否需要从新类上回基础类。若必须上溯,就需要继承。但如果不需要上溯,就应提醒自己防止继承的滥用。




多态:
概念:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。
简单的说:就是用基类的引用指向子类的对象。(用父类定义一个指针,指向子类的实例对象.)
多态优点:向后兼容,提高代码可扩充性和可维护性



在OC中:
          delegate,protocol配合的观察者模式,是oc中多态的最常见运用方式

多态在代码中的体现,即为多种形态,必须要有继承,没有继承就没有多态

在使用多态是,会进行动态检测,以调用真实的对象方法。

多态在代码中的体现即父类指针指向子类对象




作者: zwcshy    时间: 2014-12-2 19:28
楼主说的挺对的,总结的不错




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2