zoukankan      html  css  js  c++  java
  • 面向对象三大特征之封装

     上半句+下半句。三流的书籍和博客只会告诉你上半句,因为它们的作者自己也不知道下半句,而让我们接近真理,走的更远的是下半句。并且下半句往往非常简单。

    上半句就是一些半吊子挖出的天坑,就算下半句非常简单。因为上半句的误导产生的阻碍,让无数人很多年也接触不到讲述真理的下半句。

    时刻警醒:我们要学习的是讲述真理的下半句。

    1.
    什么是封装?
    封装:
    封装说了2个内容,一个是装,一个是封。

    装:提供了一种聚合方式,提供了一种组合方式。
    把东西装在一起,看作一个整体。
    1.能够描述一个事物
    事物通常具有属性和行为,我们通过数据和方法的整体可以描述这样的事物。
    并且相关的数据和方法被放到一起,提高了内部聚合度。

    2.装为我们提供了一种组合方式,我们通过装可以组合出一个东西,并且这个东西可以作为组件,继续组合出其他东西。
    能够表达层次概念,和一些复杂的关系。

    3.整体性。(1.用代码体现概念 2.方便了使用)
    1)用代码体现概念,Student类。
    2)方便了使用:
    参数不用再传递零散的数据,而是直接传递对象。
    通过对象直接调用操作其内部数据的方法。

    封:
    在装的基础上增加了访问控制,对外只提供公共的访问接口,其他的信息被隐藏起来。(上半句)
    好处:(下半句)
    避免了不必要的耦合,隐藏的信息对客户端不可见,不会和客户端发生耦合。我的代码和客户端代码只能通过公共的访问接口耦合。
    当需要修改我们的代码时,只要保证公共的访问接口不变,客户端代码是不需要改变的。

    2个特点,一个是封,一个是装。
    把存在一定关系的一些东西装在一起。对外只提供公有的访问接口,隐藏了内部具体的实现细节。
    好处:
    把相关的东西放在一起聚合度高了。通过访问控制,只对外提供公有的访问接口。客户端只能通过接口来访问。
    只要接口不改变,客户端就不需要改变,降低了耦合。

    我们把具体的实现细节隐藏了。这些东西不需要被客户端知道,信息隐藏,更安全。

    什么叫一定关系?
    我们描述客观的事物,事物总是具有一定的属性和方法,我们可以认为这些属性和方法相关的,可以放到一起。




    因为事物通常具有属性和行为,单独用数据,或者方法都无法描述。
    装让我们可以将数据和方法放在一起,看作一个整体。这样一个整体就可以用来描述事物。
    这种方式和单独用数据+方法的区别:
    1.能够描述一个事物 2.层次 3.整体性。(1.明确了概念,方便了使用)

    1.能够描述一个事物:
    因为事物通常具有属性和行为,我们可以用数据和方法的整体来描述事物。
    2.基本的东西,装在一起,产生一个整体,这个整体可以作为组件来创建另外一些整体。产生层次。
    对应于实际,可以用来描述不同层次的事物。
    举个例子:
    姓名,年龄,创建一个学生,学生可以作为一个组件,来构建新的整体。
    3.整体性。
    1)明确了概念(在代码上): 有一个名字来表示这个整体。类名,包名。
    2)方便了使用。
    例子1:我们去菜市场买菜,为啥要个塑料袋呢。
    例子2:如果你给别人一些东西,先给个a,在给个b,再给个......
    现在,我直接给你一包东西。然后说你要的都在这里面。想用啥自己取。

    具体表现:类和对象,包。
    类:对一类具体事物的抽象。
    对象:描述一个具体的事物。
    包:描述的是一个模块,一个子系统。

    这个可以用来构造不同粒度的概念。
    姓名,年龄,创建学生。
    多个学生,班级名,创建班级。
    多个班级,学校名,创建学校。
    基本类型,学生,班级,学校。粒度不断变大。

  • 相关阅读:
    为什么jdbc中的resultset只能取一次去第二次就报错了
    mapreduce中reduce中的迭代器只能调用一次。其实迭代器就只能调用一次
    Name node is in safe mode.
    mapreduce 查找共同好友
    mapreduce学习资料
    mysql 集合函数与where条件
    hive中order by,sort by, distribute by, cluster by作用以及用法
    二分类预测用的几个预测结果精确度计算方法
    矩阵乘法np.dot()及np.multipy()区别
    如何用matplotlib绘制决策边界
  • 原文地址:https://www.cnblogs.com/mozq/p/10804914.html
Copyright © 2011-2022 走看看