传送门

 

C++ 面向对象程序设计的基本特点

First: 抽象

  面向对象方法中的抽象,是指对具体问题(对象)进行概括,抽出一类对象公共性质并加以描述的过程。

  抽象的过程,也是对问题进行分析和认识的过程。

  对问题的抽象应该包括两个方面:数据抽象 和 行为抽象(也就是功能抽象 和 代码抽象)。

  用3个整形数来存储时间,分别表示时、分、秒,这个就是数据抽象。

  显示时间、设置时间等功能,这就是行为抽象。

Second:封装

  封装就是将抽象得到的数据和行为相结合,形成一个有机整体,也就是将数据与操作数据的函数代码进行

  有机的整合,形成“类”,其中的数据和函数老师类的成员。

  这个就不用解释了吧。

 

 class Clock
{
public:
  void settime();
  void showtime();
private:
int hour, minute, second;
}

Third:继承

  例如,一般意义的“人”都有姓名、性别、年龄等;还有吃饭、工作、学习等。

  但是按照职业划分,人又分为学生、老师、工程师、医生等,每一类人又有各自的特殊属性和行为。

  例如学生具有专业、年级等特殊属性和升级毕业等特殊行为,这些属性和行为是医生所不具有的。

  如何把特殊与一般的概念间的关系描述清楚,使得特殊概念之间既能共享一般的属性和行为,又能

  具有特殊的属性和行为呢?

  继承就是解决这个问题的。

  C++语言中提供了类的继承机制,允许程序员在保持原有类的基础上,进行更具体、更详细的说明。

Fourth:多态

  面向对象程序设计中的多态是对人类思维方式的一种直接模拟。

  比如我们在日常生活中说“打球”,这个“打”,就表示了一个抽象的信息,具有多重含义。

  我们可以说:打篮球、打排球、打羽毛球,都使用“打”来表示参与某种球类运动,而其中的规则

  和实际动作却相差甚远。实际上这就是对多种运动行为的抽象。

  

  多态性是指一段程序能够处理多种类型对象的能力。

  在C++中这种多态可以通过强制多态、重载多态、类型参数化多态、包含多态4种形式来实现。

  包含多态和类型参数化多态属于一般多态性,是真正的多态。

  C++中采用虚函数实现包含多态。虚函数是多态性的精华。

  模板是C++实现参数化多态性的工具,分为函数模板和类模板两种。

转 C++ 面向对象程序设计的基本特点的更多相关文章

  1. [.net 面向对象程序设计深入](0) 开篇

    [.net 面向对象程序设计深入](0)开篇        [.net 面向对象编程基础]和 [.net 面向对象程序设计进阶]在15年底写完了,群里也加进来不少热爱学习的小伙伴.让我深切感受到在这个 ...

  2. [.net 面向对象程序设计进阶] (1) 开篇

    [.net 面向对象程序设计进阶] (1) 开篇 上一系列文章<.net 面向对象编程基础>写完后,很多小伙伴们希望我有时间再写一点进阶的文章,于是有了这个系列文章.这一系列的文章中, 对 ...

  3. [.net 面向对象程序设计深入](6).NET MVC 6 —— 模型、视图、控制器、路由等的基本操作

    [.net 面向对象程序设计深入](6).NET MVC 6 —— 模型.视图.控制器.路由等的基本操作 1. 使用Visual Studio 2015创建Web App (1)文件>新建> ...

  4. [.net 面向对象程序设计深入](5)MVC 6 —— 构建跨平台.NET开发环境(Windows/Mac OS X/Linux)

    [.net 面向对象程序设计深入](5)MVC 6 —— 构建跨平台.NET开发环境(Windows/Mac OS X/Linux) 1.关于跨平台 上篇中介绍了MVC的发展历程,说到ASP.NET ...

  5. [.net 面向对象程序设计深入](4)MVC 6 —— 谈谈MVC的版本变迁及新版本6.0发展方向

    [.net 面向对象程序设计深入](4)MVC 6 ——谈谈MVC的版本变迁及新版本6.0发展方向 1.关于MVC 在本篇中不再详细介绍MVC的基础概念,这些东西百度要比我写的全面多了,MVC从1.0 ...

  6. [.net 面向对象程序设计深入](3)UML——在Visual Studio 2013/2015中设计UML活动图

    [.net 面向对象程序设计深入](3)UML——在Visual Studio 2013/2015中设计UML活动图 1.活动图简介 定义:是阐明了业务用例实现的工作流程. 业务工作流程说明了业务为向 ...

  7. [.net 面向对象程序设计深入](2)UML——在Visual Studio 2013/2015中设计UML用例图

    [.net 面向对象程序设计深入](2)UML——在Visual Studio 2013/2015中设计UML用例图  1.用例图简介 定义:用例图主要用来描述“用户.需求.系统功能单元”之间的关系. ...

  8. [.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图

    [.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图 1.UML简介 Unified Modeling Language (UML)又称统 ...

  9. [.net 面向对象程序设计进阶] (28) 结束语——告别2015

    [.net 面向对象程序设计进阶] (28) 结束语——告别2015 <.net面向对象程序设计进阶>这一系列文章写了太长的时间了,大概有半年没写,在年底又一口气写了好几篇.在整个过程中目 ...

  10. [.net 面向对象程序设计进阶] (27) 团队开发利器(六)分布式版本控制系统Git——在Visual Studio 2015中使用Git

    [.net 面向对象程序设计进阶] (26) 团队开发利器(六)分布式版本控制系统Git——在Visual Studio 2015中使用Git 本篇导读: 接上两篇,继续Git之旅 分布式版本控制系统 ...

随机推荐

  1. 使用lua做序列化和反序列化

    -- lua对象序列化 function serialize(obj) local lua = "" local t = type(obj) if t == "numbe ...

  2. 20180904 定时器setTimeout和setInterval回调问题

    引用: setTimeout和setInterval两者的区别 setTimeout和setInterval的优缺点 setTimeout和setInterval详解 两者的作用都是在定时多少毫秒后回 ...

  3. 【转】MFC右键显示菜单之LoadMenu()

    如何在界面内单击右键弹出自己设置的菜单选项? 步骤如下: 1.在资源MENU里添加一个菜单资源,命名为IDR_POP_MENU. 2.在自己添加的菜单中添加事件,如事件1,事件2,事件3,分别添加响应 ...

  4. Linux Ptrace 详解

    转 https://blog.csdn.net/u012417380/article/details/60470075 Linux Ptrace 详解 2017年03月05日 18:59:58 阅读数 ...

  5. Python之简单Socket编程

    Socket编程这块儿还是比较重要的,记录一下:实现服务器端和客户端通信(客户端发送系统指令,如ipconfig等,服务器端执行该指令,然后将指令返回结果给客户端再传过去,设置一次最多直接收1024字 ...

  6. 简单了解hash

    hash,译为散列或哈希.就是把任意长度的输入(可变类型除外)经过hash算法,输出成固定长度的输出,该输出就是hash值.哈希值比原有的输出占用空间要小,但是不同的输出可能会hash出一样的值,所以 ...

  7. 爬取豆瓣Top250_Ajax动态页面

    爬取网址: 完整代码: import sys from urllib import request, parse import ssl ssl._create_default_https_contex ...

  8. Linux学习-逻辑滚动条管理员 (Logical Volume Manager)

    LVM 可以整合多个实体 partition 在一起, 让这些 partitions 看起来就像是一个磁盘一样!而且,还可以在未来新增或移除其他的实 体 partition 到这个 LVM 管理的磁盘 ...

  9. 使用html+javascriptt实现的简易四则运算(初学JavaScript笔记)

    今天第一天学javascript,做了个简易的四则运算,提供参考,效果图: html代码: <!DOCTYPE html> <html > <head > < ...

  10. 利用Windbg深入理解变量的存储模型

    下面的是一个简单的测试程序,基本包括了所有的变量类型,包括静态的,常量的,全局的,本地的,还有new出来的 #include <iostream> using namespace std; ...