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自己都是一步一个脚印走出来的,其中开心过.失落过.寂寞过.虽然是半道出家但是经过自己的努力也算是完成了“学业” ...
随机推荐
- 3-开发共享版APP(搭建指南)-修改手机验证码
https://www.cnblogs.com/yangfengwu/p/11273743.html 请先看数据篇 或者参考 https://www.cnblogs.com/yangfengwu/p/ ...
- 洛谷 P4149 [IOI2011]Race-树分治(点分治,不容斥版)+读入挂-树上求一条路径,权值和等于 K,且边的数量最小
P4149 [IOI2011]Race 题目描述 给一棵树,每条边有权.求一条简单路径,权值和等于 KK,且边的数量最小. 输入格式 第一行包含两个整数 n, Kn,K. 接下来 n - 1n−1 行 ...
- bootstrap 多级联动下拉框
<!DOCTYPE HTML> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...
- 「BJOI2018」治疗之雨
传送门 Description 有\(m+1\)个数,第一个数为\(p\),每轮:选一个数\(+1\),再依次选\(k\)个数\(-1\) 要求如果第一个数\(=N\),不能选它\(+1\),如果第一 ...
- Gaussian Processes
原文地址:https://borgwang.github.io/ml/2019/07/28/gaussian-processes.html 一元高斯分布 概率密度函数:\[p(x) = \frac{1 ...
- saltstack自动化运维工具搭建个人笔记
至于为什么选择saltstack,因为Puppet.Chef基于Ruby开发,而ansible.saltstack基于python开发,便于后期二次,良好的可移植性. 又,ansible基于SSH协议 ...
- DNS技术和NAT技术详解
DNS技术和NAT技术详解一.DNS(Domain Name System)1.什么是DNS2. 了解域名3.域名解析过程4.使用dig工具分析DNS过程5.浏览器输入URL后发生什么事?二.ICMP ...
- 多线程--同步--方法块和同步块synchronized
package com.sxt.syn; /** * 线程安全: 在并发时保证数据的正确性.效率尽可能高 * synchronized * 1.同步方法 * 2.同步块 * * */ public c ...
- 重装系统之前需要做的checklist
1. 各浏览器 ---- 导出收藏夹 2. 备份桌面 3. 查用工具截图保存.保存使用了哪些工具 4.查看C盘有没有放置其他资料,需要备份的
- QWidget添加带有图片的QPushButton,布局QGridLayout
QWidget* w = new QWidget(this); w->setGeometry(10,20,400,300); QVBoxLayout* layout = new QVBoxLay ...