面向对象三大特征之封装

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

原文地址:https://www.cnblogs.com/mozq/p/10804914.html

时间: 2024-11-13 02:16:17

面向对象三大特征之封装的相关文章

面向对象三大特征之封装与static——(Java学习笔记四)

面向对象     编程本质:以类的方式组织代码,以对象的方式组织(封装)数据 对象:具体的事物,某个类的对象(实例) 类:是对对象的抽象,用于描述同一类型的对象的一个抽象概念 对象和类的关系:特殊到一般,具体到抽象 三大特征: 封装 继承 多态 构造器:又叫构造方法(constructor),用于构造类的实例 格式:修饰符 类名(形参列表){ //语句 } 构造器的方法名与类名一致 通过new关键字调用 当没有定义构造方法时,系统会自定义一个无参构造函数 构造方法可以重载 作用:构造该类的对象,

简述Java面向对象三大特征:封装、继承、多态

封装: 把对象的全部属性和服务结合在一起,形成不可分割的独立单位: 尽可能隐藏内部细节.(数据隐藏.隐藏具体实现的细节) public.private.protected.default public:既可以跨类访问,也可以跨包(package)访问 private:只能被该类对象访问,子类不能访问,更不能跨包访问 protected:只能被该类本身和子类访问,即使子类不在包中也可以访问 default:即不添加任何修饰符,只允许同一个包进行访 继承: 1. is a 关系(eg:经理 is a

【原生js】js面向对象三大特征之封装笔记

所谓封装,就是把抽象出的属性和对属性的操作写到类的定义中,称为封装. js中实现封装主要有两种封装(公开,私有) function Person(name,sal){ this.name=name; //公开 var sal=sal;//私有 this.showInfo=function(){ //公开 window.alert(this.name+” ”+sal); } showInfo2(){ //把函数私有化. window.alert(“你好”+this.name+” ”+sal) }

c++面向对象三大特征封装、继承和多态知识总结

面向对象三大特征:封装,继承,多态: 一.封装:该公开的就公开话,该私有的就隐藏掉,主要是由public,private实现:作用是便于分工和分模块,防止不必要的扩展: 二.继承:就是一种传承,可以把父类型中的数据传承到子类中,子类除了传承了父类的数据之外,还可以对父类型进行扩展: 公开继承  public 保护继承  protected 私有继承  private 保护成员:在子类和本类中可以访问,其他不行: 1.公开继承:在公开继承下,父类型中的数据是公开的到子类型中权限是公开的:父类型中保

类与对象 面向对象和面向过程对比 面向对象三大特征:封装 继承 多态

 初识面向对象 面向过程: 一切以事务的发展流程为中心. 面向对象: 一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象 打比方: 大象进冰箱 步骤: 第一步, 开门, 第二步, 装大象, 第三步, 关门 面向对象:大象, 你进冰箱. 此时主语是大象. 我操纵的是大象. 此时的大象就是对象 1. 面向过程: 一切以事物的流程为核心. 核心是"过程"二字, 过程是指解决问题的步骤, 即, 先?干什么, 后干什么. 基于该思想编写程序就好比在编写一套流水线. 是一种机械 式的编程

(一)Python入门-6面向对象编程:07面向对象三大特征(封装、继承、多态)-继承

一:面向对象三大特征介绍 Python是面向对象的语言,也支持面向对象编程的三大特性:继承.封装(隐藏).多态. 封装(隐藏) 隐藏对象的属性和实现细节,只对外提供必要的方法.相当于将“细节封装起来”,只 对外暴露“相关调用方法”. 通过前面学习的“私有属性.私有方法”的方式,实现“封装”.Python 追求简洁的语法,没有严格的语法级别的“访问控制符”,更多的是依靠程序员自觉实现. 继承 继承可以让子类具有父类的特性,提高了代码的重用性. 从设计上是一种增量进化,原有父类设计不变的情况下,可以

PHP面向对象三大特征

<?php//PHP 面向对象三大特征 封装 继承 多态 <抽象> //封装 /** * @author bin * *//* class Person{ //encapsulate private $name; private $age; //这个就好比我们Java中的get set 想spring注入的 通过通过set方法 通过构造函数 一样 public function __set($columnName,$value){ $this->columnName = $valu

JavaSE(一)面向对象三大特征、五大原则

面向对象三大特征: (1)封装(Encapsulation) 所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏.封装是面向对象的特征之一,是对象和类概念的主要特性.简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体.在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问.通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分. (2)继承(Inhe

面向对象三大特征------封装、继承、多态

首先,为什么要面向对象程序设计? 1.开发时间短,效率高,可靠性高,所开发的程序更强壮.由于面向对象编程的可重用性,可以在应用程序中大量采用成熟的类库,从而缩短了开发时间. 2.应用程序更易于维护.更新和升级.继承和封装使得应用程序的修改带来的影响更加局部化. 三大特性之封装 封装: 封装是面向对象的特征之一,是对象和类概念的主要特性.封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面.面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治.封装的对象,这些对象通过一个受保