C++四大特性之封装
C++四大特性
C++作为面向对象编程语言,具备面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)的四大特性。抽象,封装,继承,多态。
所谓抽象,就是对具体事物的定义过程。而在编程语言中的理解就是在使用面向对象的方法设计一个软件系统时,首先就要区分出现实世界中的事物所述的类型,分析它们拥有哪些性质与功能,再将它们抽象为在计算机虚拟世界中才有意义的实体——类,在程序运行时,由类创建出对象,用对象之间的相互合作关系来模拟真实世界中事物的相互关联。(这些毫无意义)
关于抽象其实就是一种思想,我们不必过多的去考虑,因为这个思想将无时无刻不渗透与我们的代码编写中
实际上不只是抽象,封装,继承,多态也是一种哲学思想体现,人们尽可能利用自己的思维方式去认识世界。基于封装,继承,和多态三种思想去构造代码,去编写程序。封装,继承,多态可以说是形而上学的东西,但人们在这些形而上学的思想的指导下,有了对代码的相应操作,数据类型等可实操的行为。所以面向对象有时候也称三大特性,因为这三大特性可实操。
封装
封装是一种思想,字面上理解就是就把什么东西装在一起并封起来,那么封起来的是什么呢?有什么好处呢?举个栗子,过度包装的月饼(完全不透色)。这是将月饼封装起来,你只能透过封皮去了解它,加工人员只允许你通过表皮去了解它,这样就避免了你看到它内部的可能,让你看到他想让你看到的,而这样做的好处不必多说了吧。
而在编程方面理解封装就是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这 个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护 的接口访问其他对象。
由于我们的代码不是月饼,所以不必把它是否新鲜藏起来。我们所需要封装的是它的各种数据和我们对各种数据的操作。
而要讲对于封装的实际操作就又免不了抽象这个概念,我这里的抽象专指类与对象。类与对象是一个相对应的名词。类是对象的集合,对象是类的个体。举个栗子:你将你们班身高一米八以上的男生分为一类人(高个),这就是一个类,特性是高于一米八,而里面的一个人就一个对象。再举个栗子,你将你们班踢足球的男生分为一类,这就是另一个类。然后将高于一米八且会踢足球的划分为第三类,这便又是一类。然后我们看一下分类标准。身高,踢足球。然后我们发现身高这个标准和踢足球是不一样的,一个是人们的固有属性,一个是人们的运动。而在编程中就是静态成员和对数据成员操作的函数(动态)。
然后我们来说一下封装的实现。无论封装还是继承或多态都是在对类和对象进行操作。C++中的关键字class可以来定义函数,其中又有三种封装方式。Private,public和protected(与继承有关,后期再说)。做个总结:可以简单认为类与对象(C++中的class)就是抽象的体现,继承,封装和多态就是在类(class)的基础得以实现的。
封装的实现依赖于public和private

C++四大特性之封装的更多相关文章
- 牛客网Java刷题知识点之面向对象java的四大特性(抽象、封装、继承、多态)
不多说,直接上干货! 面向对象java的四大特性之抽象 抽象就是有点模糊的意思,还没确定好的意思. 就比如,要定义一个方法和类.但还没确定怎么去实现它的具体一点的子方法,那我就可以用抽象类或接口.具体 ...
- java的四大特性
java的四大特性是:封装.继承.多态,抽象.
- java四大特性理解(封装继承多态抽象)
封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口.面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治.封装的对象,这些对象通过一个受保护的接口访问其他对象.封装是一 ...
- 前端CSS的工程化——掌握Sass这四大特性就够了
初遇 CSS,一见倾心 记得刚遇见css的时候,咱像是见了美人儿一样,简直是爱不释手啊,简简单单写几行算不上代码的代码,就能做出这么漂亮的东西,这也成了咱前端之路的最初动力. 然而,随着项目体量和页面 ...
- Javascript面向对象三大特性(封装性、继承性、多态性)详解及创建对象的各种方法
Javascript基于对象的三大特征和C++,Java面向对象的三大特征一样,都是封装(encapsulation).继承(inheritance )和多态(polymorphism ).只不过实现 ...
- Java的三大特性之封装
java提高篇(一)-----理解java的三大特性之封装 三大特性之---封装 封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一 ...
- 黑马程序员——OC基础 三种特性之封装
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) 三种特性之一封装 (一)set方法和get方法 1) set方法 1&g ...
- AngularJS四大特性
Google AnguarJS是一个JS框架,适用于以数据的CRUD操作为主的SPA应用. 四大特性: (1)MVC模型 Model:模型,即数据=>JS中的变量 View:视图,即数据的呈现= ...
- java提高篇(一)-----理解java的三大特性之封装
从大二接触java开始,到现在也差不多三个年头了.从最基础的HTML.CSS到最后的SSH自己都是一步一个脚印走出来的,其中开心过.失落过.寂寞过.虽然是半道出家但是经过自己的努力也算是完成了“学业” ...
随机推荐
- JavaScript基础12——运动
运动原理 运动的原理: 让某件物品沿着某种方向随着时间的变化改变位置 setInterval(function(){ obox.style.left = obox.offsetLeft+10 ...
- rpm命令(转)
rpm -qa|grep mysql rpm命令是RPM软件包的管理工具.rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受 ...
- 《dream》
<dream- 梦想> I don't know what that dream is that you have, I don't care how disappointing it m ...
- 一篇常做错的经典JS闭包面试题
作者 | Jeskson 来源 | 达达前端小酒馆 1 究竟是怎么样的一道面试题,能让我拿出来说说呢?下面请看代码: function fun(a,b) { console.log(b) return ...
- CentOS里下载和离线安装rpm包
离线下载rpm包 yum --downloadonly --downloaddir=/home/packages install mariadb-devel 安装离线rpm包 进入下载包的 ...
- mstar gdb调试
当进程崩溃出现coredump提示时,可以利用gdb来定位出错函数. 首先,把core_dump.XXX.gz文件从设备上拷贝出来,放到编译环境下,另外,还要把代码目录下的symbols文件夹也拷贝到 ...
- 如何在 Apache Hive 中解析 Json 数组
我们都知道,Hive 内部提供了大量的内置函数用于处理各种类型的需求,参见官方文档:Hive Operators and User-Defined Functions (UDFs).我们从这些内置的 ...
- Mac OS X 10.14.3下如何给Python2.7.10安装MySQL-Python
最近准备再看一下python ,弄个自动化部署的工具,一来就遇到了坑 sudo pip install MySQL-Python --global-option=build_ext --global- ...
- iOS项目运行出现:[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object
说白了就是 字典初始化 的时候 放入空的值了 下面这个比较具体 错误原因: NSDictionary *dic = @{@"key":value}这个初始化方法,发现keys co ...
- Spark连续特征转化成离散特征
当数据量很大的时候,分类任务通常使用[离散特征+LR]集成[连续特征+xgboost],如果把连续特征加入到LR.决策树中,容易造成overfit. 如果想用上连续型特征,使用集成学习集成多种算法是一 ...