文章目录
封装
- 封装
- 继承
-
- 扩展继承[√]
- 限制继承[×]
- 方便继承[×]
- 多态
封装要求只能通过对象接口中的操作才能访问到对象的状态。如果强迫封装,它将带来高度的数据独立性,这样所封装的数据结构将来的变化就不会导致一定要修改已有的程序。
关于继承与封装,尽管它们同为面向对象的三大特性,但现实情况是,封装与继承和查询能力是正交的,它不见得与这两个特性一起折中考虑。 事实上,将所有的数据声明为private也是不现实的。
继承允许子类直接访问protected属性,它削弱了封装。当计算涉及不同类的对象时,可能要求这些不同的类彼此是friend的或者让元素具有包可见性,这就进一步破坏了封装。
封装是针对类的概念,不针对于对象。 事实上,大多数的OO程序设计环境中,一个对象不能对同一个类的另一个对象隐藏任何东西。
用户基于SQL访问数据库中的数据,期望在查询时直接查询属性,而不是被迫使用某些数据访问方法,否则会导致查询的表达更困难、更易出错。
设计应用时,应该使它们达到期望的封装水平,但还要与继承、数据库查询以及计算需求相权衡。
封装的优点:
- 提高了安全性,防止一些误操作。
- 提高了复用性,