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自己都是一步一个脚印走出来的,其中开心过.失落过.寂寞过.虽然是半道出家但是经过自己的努力也算是完成了“学业” ...
随机推荐
- IIS服务器简单搭建
概况 系统:WIN10企业版 开发工具:VS2013 - VS2017 IIS版本:IIS6.0 安装 安装步骤如图: 这里需要注意一点信息服务器下默认web管理工具只有iis控制台勾上了,也就意味 ...
- IIS服务器部署web应用《一》
最近了解到开发用iis部署环境,于是了解了下. IIS用于部署web应用,其简单,配置方便,可以用作本地机器作为服务器进行部署.且所在部署系统为windows,便于使用iis. 端口80需要修改为别的 ...
- python crawler
crawl blog website: www.apress.com # -*- coding: utf-8 -*- """ Created on Wed May 10 ...
- linux 排查cpu负载过高异常
步骤一.找到最耗CPU的进程 工具:top 方法: 执行top -c ,显示进程运行信息列表 键入P (大写p),进程按照CPU使用率排序 图示: 如上图,最耗CPU的进程PID为10765 步骤二: ...
- 状压dp专题复习
状压dp专题复习 (有些题过于水,我直接跳了) 技巧总结 : 1.矩阵状压上一行的选择情况 \(n * 2^n\) D [BZOJ2734][HNOI2012]集合选数 蒻得不行的我觉得这是一道比较难 ...
- Java重启后不能打开的一些解决方法
点开环境变量设置,重新确定一下(据说是win10的原因) 将环境变量中path与CLASSPATH中的%JAVA_HOME%改为JAVA_HOME的值.参考https://blog.csdn.net/ ...
- 【重庆师范大学】PHP博客训练-Thinkphp
设计数据库 CREATE TABLE `user` ( `user_id` int unsigned NOT NULL AUTO_INCREMENT, `username` varchar() COM ...
- 【深入学习linux】Xshell的安装和使用
桥接模式下,连接xshell教程 centOS7 的ifcfg-ens33 跟刚才记录的一样 第一步:进入终端 /etc/sysconfig/network-scripts/目录 第二步:修改i ...
- web页面引入字体
一.常见web字体 TrueType (.ttf) Windows和Mac系统最常用的字体格式,其最大的特点就是它是由一种数学模式来进行定义的基于轮廓技术的字体,这使得它们比基于矢量的字体更容易处理, ...
- MySQL Unknown table engine 'FEDERATED''
Last_SQL_Error: Error 'Unknown table engine 'FEDERATED'' on query. 错误 解决过程: 1.查看当前支持的存储引擎 show en ...