抽象:

要将现实中的一个具体事务,变成C++中的一个类,例如将现实中的汽车变成代码中的car类。完成这个过程就需要 抽象 这一基本手段。

抽象是指 对具体问题(对象)进行分析概括,找出该类对象的公共性质(属性,方法),然后将这些公共性质描述出来。例如,汽车中的公共性质由有:1.属性:轮胎,玻璃,座位。  2.方法:行驶,保护。由这些公共性质便可以写出car类。

封装:

通过抽象,我们可以将现实世界中的某一个对象的公共性质找出来(有意识地从两个方向寻找:1.属性,2.方法)。接下来,我们要真正写出car类,需要将这些公共性质组装成具体得car类。完成这个过程就需要 封装 这一基本手段。

封装就是将抽象得到的公共性质(属性,方法)结合起来,形成一个有机的整体。也就是我们通常动手写car类的过程。

继承:

通常我们通过抽象,封装所写出的类都是很基础,很一般的类(一般来说,我们写类就是盯着一般类写)。例如car类,它就是对汽车描述的一般类,因为现实中汽车还可以具体分为:小轿车,货车,大巴,火车等。那么,难道当我们需要建立一个火车类的时候,还要重新通过对火车的抽象,封装写出train类?不需要!此时我们应该在car类的基础上,对car类增加train的公共性质,然后利用car类写出train类。这就是一个 从一般到个别 的过程。

继承,就是用来处理 从一般到个别 的基本手段。即 使得特殊类(train类)既能共享一般类(car类)的属性和方法,又能具有特殊的属性和方法。或者说:类的继承机制,允许程序员在保持原有类特性的基础上,进行更具体更详细的说明。

多态:

多态就是对人类思维方式的一种直接模拟。例如,日常生活中说到的“打球”,其中的“打”对于不同的球(篮球,乒乓球,羽毛球)就有不同的意义,我们理解这个“打”是通过球的类型来理解的;如果仅说打球我们的确没有具体的概念,但如果说“打篮球”,“打羽毛球”,我们一定能知道这个“打”应该如何理解。例如:在car类中,我们定义了一个 “showtime()”方法,它作用是“显示当前的时间”。而在现实中,在某辆汽车里,我们的汽车可以显示:1.此时的北京时间;2.此次启动后,此时车已经行驶的时间;3.此时车载电台已经播放的时间。那么,这个showtime()显示的是上述3种时间中的哪一个?要想完成这个任务,就要利用 多态。

通过多态,我们可以在程序中模拟 人通过具体语境来识别空泛概念的某一具体含义。例如,要理解“打球”中的“打”的含义:在 球是“乒乓球”时,“打”就是 人在乒乓球台上,利用乒乓球拍,遵守乒乓球游戏规则的活动;在 球是“篮球”时,“打”就是 人在篮球场上,利用篮球,遵守篮球游戏规则的活动。在程序中,我们只要在“showtime()”中限定是在“1.北京时间;2.行驶时间;3.电台时间”中的某一情形,我们也能确定当前显示的时间是具体的某一类了。

广义上说,多态是指 一段程序能够处理多种类型对象的能力。 在C++中,有四种多态:强制多态,重载多态,类型参数化多态,包含多态。强制多态:将一种类型的数据强制转换成另一种类型的数据即 数据类型转换(显示;隐式);重载多态:给同一个名字赋予不同的含义;

包含多态:利用虚函数实现,虚函数是多态的精华;类型参数化多态:使用模板实现,模板可分为函数模板和类模板.

总的来说:

1.抽象:从现实中的对象提取公共性质

2.封装:将公共性质组装成程序中的类

3.继承:在程序中,对已有的一般类实现从一般到个别的具体化

4.多态:让类的方法具有依据不同情景表现处不同的具体功能

C++中的基础特性:封装,继承,多态的更多相关文章

  1. Java三大特性(封装,继承,多态)

    Java中有三大特性,分别是封装继承多态,其理念十分抽象,并且是层层深入式的. 一.封装 概念:封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据 ...

  2. Java基础——面向对象(封装——继承——多态 )

    对象 对象: 是类的实例(实现世界中 真 实存在的一切事物 可以称为对象) 类: 类是对象的抽象描述 步骤: 1.定义一个类 (用于 描述人:) ( * 人:有特征和行为) 2.根据类 创建对象 -- ...

  3. C++三大特性 封装 继承 多态

    C++ 三大特性 封装,继承,多态 封装 定义:封装就是将抽象得到的数据和行为相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成类,其中数据和函数都是类的成员,目的在于将对 ...

  4. 深入理解Java面向对象三大特性 封装 继承 多态

    1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类 ...

  5. Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态)

    Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态) 1.面向对象的三大特性: (1)继承 ​ 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,父类又可以 ...

  6. java面向对象(封装-继承-多态)

    框架图 理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程强调的是功能行为 面向对象将功能封装进对象,强调具备了功能的对象. 面向对象是基于面向过程的. 面向对象的特点 ...

  7. 浅谈学习C++时用到的【封装继承多态】三个概念

    封装继承多态这三个概念不是C++特有的,而是所有OOP具有的特性. 由于C++语言支持这三个特性,所以学习C++时不可避免的要理解这些概念. 而在大部分C++教材中这些概念是作为铺垫,接下来就花大部分 ...

  8. php面向对象 封装继承多态 接口、重载、抽象类、最终类总结

    1.面向对象 封装继承多态  接口.重载.抽象类.最终类 面向对象 封装继承多态  首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一 ...

  9. OOP三大核心封装继承多态

    OOP支柱 3 个核心:封装 继承 多态 封装就是将实现细节隐藏起来,也起到了数据保护的作用. 继承就是基于已有类来创建新类可以继承基类的核心功能. 在继承中 另外一种代码重用是:包含/委托,这种重用 ...

  10. python面向对象(封装,继承,多态)

    python面向对象(封装,继承,多态) 学习完本篇,你将会深入掌握 如何封装一个优雅的借口 python是如何实现继承 python的多态 封装 含义: 1.把对象的属性和方法结合成一个独立的单位, ...

随机推荐

  1. yield的表达式形式与内置函数

    yield的功能: 1. 与return类似,都可以返回值,不一样在于,yield可以返回多个值而且可暂停,再次执行可继续下一步操作,return到了就停止不在继续运行. 2.为封装好的的函数能够使用 ...

  2. html中form表单的使用方法和介绍

    from表单的使用方法 一.表单赏析 二.了解表单功能:用于搜集不同类型的用户输入的内容 有了表单,网页的内容可以由用户自己创建,那么对于网页来说,我们既是网页创建都者,也是网页的消费者. 三.常用的 ...

  3. flask 第二章 endpoint重名 Flask路由 初始化配置 Falsk Config 蓝图+目录结构

    今日内容 1.路由的分发,以下两种方式效果一样,但是都能指向同一个函数 from flask import Flask app=Flask(__name__) #第一种方式 @app.route('/ ...

  4. ORACLE,DECODE函数和排名函数DENSE_RANK函数的使用

    这几天写一个报表的页面,从很恶心的数据结构中做一个聚合函数的查询,结构大概是这个样子的: 所以有:对数据group by t.id,t.name.t.course 这样三层排序,然后用函数去取值. d ...

  5. [Leetcode 72]编辑距离 Edit Distance

    [题目] Given two words word1 and word2, find the minimum number of operations required to convert word ...

  6. xcode10关于clang -lstdc++.6.0.9报错问题

    因为xcode10已经废弃了libstdc++.6.0.9这个库,所以只需要在你的工程中删除这个库,然后添加libc++这个库就可以了.别的没什么,如果xcode10报错mutable开头的,大部分是 ...

  7. Vue项目的打包

    vue项目的打包 更改config文件夹下的index.js里的assetsPublicPath路径    将 “/”  改为  “./” build: { env: require('./prod. ...

  8. Beta冲刺 2

    前言 队名:拖鞋旅游队 组长博客:https://www.cnblogs.com/Sulumer/p/10104842.html 作业博客:https://edu.cnblogs.com/campus ...

  9. 给大家介绍一个实用的RN神器DeviceEventEmitter

    再不出来更新一下自己都感觉不到自己还存在了,这个监听最常用的地方莫过于单选和全选了,,当然远不止这个了,大家可以自己去多尝试几波,举个栗子 A组件全选所在 //全选 choose(bool){ //选 ...

  10. vue启动报错

    在安装依赖后,启动时报错 修复方法:将项目node_modules文件夹删除掉,重新cnpm install即可