C++四大特性

C++作为面向对象编程语言,具备面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)的四大特性。抽象,封装,继承,多态。

所谓抽象,就是对具体事物的定义过程。而在编程语言中的理解就是在使用面向对象的方法设计一个软件系统时,首先就要区分出现实世界中的事物所述的类型,分析它们拥有哪些性质与功能,再将它们抽象为在计算机虚拟世界中才有意义的实体——类,在程序运行时,由类创建出对象,用对象之间的相互合作关系来模拟真实世界中事物的相互关联。(这些毫无意义)

关于抽象其实就是一种思想,我们不必过多的去考虑,因为这个思想将无时无刻不渗透与我们的代码编写中

实际上不只是抽象,封装,继承,多态也是一种哲学思想体现,人们尽可能利用自己的思维方式去认识世界。基于封装,继承,和多态三种思想去构造代码,去编写程序。封装,继承,多态可以说是形而上学的东西,但人们在这些形而上学的思想的指导下,有了对代码的相应操作,数据类型等可实操的行为。所以面向对象有时候也称三大特性,因为这三大特性可实操。

封装

封装是一种思想,字面上理解就是就把什么东西装在一起并封起来,那么封起来的是什么呢?有什么好处呢?举个栗子,过度包装的月饼(完全不透色)。这是将月饼封装起来,你只能透过封皮去了解它,加工人员只允许你通过表皮去了解它,这样就避免了你看到它内部的可能,让你看到他想让你看到的,而这样做的好处不必多说了吧。

而在编程方面理解封装就是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这 个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护 的接口访问其他对象

由于我们的代码不是月饼,所以不必把它是否新鲜藏起来。我们所需要封装的是它的各种数据和我们对各种数据的操作。

而要讲对于封装的实际操作就又免不了抽象这个概念,我这里的抽象专指类与对象。类与对象是一个相对应的名词。类是对象的集合,对象是类的个体。举个栗子:你将你们班身高一米八以上的男生分为一类人(高个),这就是一个类,特性是高于一米八,而里面的一个人就一个对象。再举个栗子,你将你们班踢足球的男生分为一类,这就是另一个类。然后将高于一米八且会踢足球的划分为第三类,这便又是一类。然后我们看一下分类标准。身高,踢足球。然后我们发现身高这个标准和踢足球是不一样的,一个是人们的固有属性,一个是人们的运动。而在编程中就是静态成员和对数据成员操作的函数(动态)。

然后我们来说一下封装的实现。无论封装还是继承或多态都是在对类和对象进行操作。C++中的关键字class可以来定义函数,其中又有三种封装方式。Private,public和protected(与继承有关,后期再说)。做个总结:可以简单认为类与对象(C++中的class)就是抽象的体现,继承,封装和多态就是在类(class)的基础得以实现的。

封装的实现依赖于public和private

C++四大特性之封装的更多相关文章

  1. 牛客网Java刷题知识点之面向对象java的四大特性(抽象、封装、继承、多态)

    不多说,直接上干货! 面向对象java的四大特性之抽象 抽象就是有点模糊的意思,还没确定好的意思. 就比如,要定义一个方法和类.但还没确定怎么去实现它的具体一点的子方法,那我就可以用抽象类或接口.具体 ...

  2. java的四大特性

    java的四大特性是:封装.继承.多态,抽象.

  3. java四大特性理解(封装继承多态抽象)

    封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口.面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治.封装的对象,这些对象通过一个受保护的接口访问其他对象.封装是一 ...

  4. 前端CSS的工程化——掌握Sass这四大特性就够了

    初遇 CSS,一见倾心 记得刚遇见css的时候,咱像是见了美人儿一样,简直是爱不释手啊,简简单单写几行算不上代码的代码,就能做出这么漂亮的东西,这也成了咱前端之路的最初动力. 然而,随着项目体量和页面 ...

  5. Javascript面向对象三大特性(封装性、继承性、多态性)详解及创建对象的各种方法

    Javascript基于对象的三大特征和C++,Java面向对象的三大特征一样,都是封装(encapsulation).继承(inheritance )和多态(polymorphism ).只不过实现 ...

  6. Java的三大特性之封装

    java提高篇(一)-----理解java的三大特性之封装 三大特性之---封装 封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一 ...

  7. 黑马程序员——OC基础 三种特性之封装

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) 三种特性之一封装 (一)set方法和get方法 1)  set方法 1&g ...

  8. AngularJS四大特性

    Google AnguarJS是一个JS框架,适用于以数据的CRUD操作为主的SPA应用. 四大特性: (1)MVC模型 Model:模型,即数据=>JS中的变量 View:视图,即数据的呈现= ...

  9. java提高篇(一)-----理解java的三大特性之封装

    从大二接触java开始,到现在也差不多三个年头了.从最基础的HTML.CSS到最后的SSH自己都是一步一个脚印走出来的,其中开心过.失落过.寂寞过.虽然是半道出家但是经过自己的努力也算是完成了“学业” ...

随机推荐

  1. PostgreSQL 执行计划

    简介 PostgreSQL是“世界上最先进的开源关系型数据库”.因为出现较晚,所以客户人群基数较MySQL少,但是发展势头很猛,最大优势是完全开源. MySQL是“世界上最流行的开源关系型数据库”.当 ...

  2. Nginx+Php-fpm运行原理 代理与反向代理

    一.代理与反向代理 现实生活中的例子 1.正向代理:访问google.com 如上图,因为google被墙,我们需要vpnFQ才能访问google.com.Virtual Private Networ ...

  3. linux高性能服务器编程 (七) --Linux服务器程序规范

    第七章 LInux 服务器程序规范 1)linux服务器程序一般以后台进程形式运行.后台进程又称为守护进程,是没有控制终端的,所以不会受到外界的干扰.守护进程的父进程通常是init进程(PID为1的进 ...

  4. 分析WordPress数据表之用户表(功能篇)

    数据表分析 wp_users wp_usermeta 用户系统就是靠着这两张表来实现的. 具体事例分析 添加用户 添加成功后,我们会分别在wp_users及wp_usermeta表中分别看到test0 ...

  5. [Beta阶段]发布说明

    小小易校园微信小程序发布说明 第二版小小易校园小程序发布啦~ 打开微信,点击右上角➕,选择扫一扫,扫描以下二维码即可进入小程序: 版本功能: 上一版功能请参见[Alpha阶段]发布说明. 当前版本的更 ...

  6. 如何查看android studio sdk路径配置

    file–>Other Settings–>Default Project Structure

  7. Guava 库

    https://www.yiibai.com/guava https://wizardforcel.gitbooks.io/guava-tutorial/content/1.html com.goog ...

  8. wx.request 请求与django

    wx.request 1.wx.request相当于ajax请求,和django后台进行交互 官方文档:https://developers.weixin.qq.com/miniprogram/dev ...

  9. windows如何删除服务

    有时候软件被安装成了服务,但是卸载后如何删除无效的服务,这时候就不是普通用户就能删除了,这属于操作系统管理级别了,需要使用管理命令了. 管理员权限打开cmd,执行如下: C:\Windows\syst ...

  10. python开发笔记-str转字典

    后台接收到post请求数据格式为json格式的字符串,不能直接用字典的get方法 909090909090909090909090909090909 Internal Server Error: /g ...