面向对象的程序设计主要有四个特点:抽象、封装、继承多态。其中继承是我认为最最重要的一个特性,可以说继承是面向对象的精华所在。

举一个继承的浅显易懂的例子:假如我们已经有了一个“马”的类,其中成员变量有身长、身高、体重等,还有“吃”、“奔跑”等成员函数,现在我们想创建新类”公马“和”母马“,很明显公马母马具有马的所有特征,我们就不需要重新再写,只需要在原有类的基础上增加”性别“这一新特征,即可创建两个新类。同理,白公马、黑公马可以从公马这一个类派生出来,也就是说它可以继承公马的全部特征而加上颜色这一新特征即可。马是公马的基类,公马是白公马的基类,所以我们可以看出基类、派生类都是相对而言的。

一、派生类的声明方式

下面通过刚才举的例子来说明

class horse
{
public:
void eat();
void run(); private:
float height;
float weight;
};
class malehorse:public horse
{
private:
char sex; //只写新增加的成员
};
class wh_mhorse:public malehorse
{
private:
char color;
};
void horse::eat(){
cout<<"horse eats grass"<<endl;
}

派生类声明方式为

class  派生类名继承方式  基类名

二、派生类访问属性

首先,继承有三种方式:publicprotectedprivate。想必在刚学C++时大家都有这样的疑惑,感觉protected和private属性是一样的,反正都不能从类外访问。到了这里就有区别了:private是”私有“的,不管何种继承方式基类的私有成员都是基类所私有,派生类不可访问;而基类protected成员随继承方式的不同在派生类中担当不同身份。下面详细介绍一下

(1)共用继承

基类的共有成员和保护成员在派生类中保持原有访问属性,私有成员扔为基类所有。

(2)保护继承

基类的共有成员和保护成员在派生类中成了保护成员。

(3)私有继承

基类的共有成员和保护成员在派生类中成了私有成员。

【C++学习笔记】继承与派生基础概念的更多相关文章

  1. kvm学习笔记(一,基础概念)

    前言 阿里云的云主机,采用的kvm,今天就花了点时间研究了下. 一.安装 官方文档参考:http://www.linux-kvm.org/page/HOWTO 二.快速建立一个基于vnc的虚拟机安装 ...

  2. 【学习笔记】JavaScript的基础学习

    [学习笔记]JavaScript的基础学习 一 变量 1 变量命名规则 Camel 标记法 首字母是小写的,接下来的字母都以大写字符开头.例如: var myTestValue = 0, mySeco ...

  3. java学习笔记15--多线程编程基础2

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note15.html,转载请注明源地址. 线程的生命周期 1.线程的生命周期 线程从产生到消亡 ...

  4. 机器学习框架ML.NET学习笔记【1】基本概念与系列文章目录

    一.序言 微软的机器学习框架于2018年5月出了0.1版本,2019年5月发布1.0版本.期间各版本之间差异(包括命名空间.方法等)还是比较大的,随着1.0版发布,应该是趋于稳定了.之前在园子里也看到 ...

  5. TensorFlow学习笔记4-线性代数基础

    TensorFlow学习笔记4-线性代数基础 本笔记内容为"AI深度学习".内容主要参考<Deep Learning>中文版. \(X\)表示训练集的设计矩阵,其大小为 ...

  6. Linux 学习笔记之超详细基础linux命令(the end)

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 14---------------- ...

  7. Linux 学习笔记之超详细基础linux命令 Part 14

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 13---------------- ...

  8. Linux 学习笔记之超详细基础linux命令 Part 13

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 12---------------- ...

  9. Linux 学习笔记之超详细基础linux命令 Part 12

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 11---------------- ...

随机推荐

  1. CreateEvent,OpenEvent成功后 是否需要::CloseHandle(xxx); 避免句柄泄漏

    bool bExist = false; HANDLE hHandle = ::CreateEvent(NULL,  FALSE,  FALSE,  L"Global\\xxxxx_name ...

  2. textarea中的空格与换行

    当在一个textarea标签中键入一个回车时,实际上会插入2个符号:\n\r在javascript里, line breaks用\n表示when you pull text into Javascri ...

  3. egret命令行编译项目时 版本不对应的问题

    egret 命令行编译项目时 如使用 egret build -e 会出现版本不对应的问题 分析原因 A,B项目 A项目使用1.8的egret引擎, B项目使用2.5引擎 但本地引擎升级至2.5.5, ...

  4. angular checkbox required

    Here is the fiddle http://jsfiddle.net/lumixraku/xgLz7d4j/2/ html <body ng-app="app"> ...

  5. 动画画圆的效果特效ios源码

    一款不错的支持动画画圆的效果特效源码,该效果实现了动画画圆,还可以扩展成画其他平面图形功能等,大家可以下载看看吧. //定义所需要画的图形  -(void)intiUIOfView  {      U ...

  6. Hibernate 配置详解(12) 其实我也不想用这么土的名字

    hibernate.hbm2ddl.import_files 这个配置用于在hibernate根据映射文件执行DDL之前,如果我们自己设置了要事先运行的SQL文件,hibernate就会先执行这些SQ ...

  7. 自己动手写处理器之第一阶段(3)——MIPS32指令集架构简单介绍

    将陆续上传本人写的新书<自己动手写处理器>(尚未出版).今天是第四篇.我尽量每周四篇 1.4 MIPS32指令集架构简单介绍 本书设计的处理器遵循MIPS32 Release 1架构,所以 ...

  8. 使用 system.io.filesysteminfo 来查找文件。

    如何快速搜索你想找到文件呢.大家知道Windows系统自带了搜索,很方便,下面介绍自己编写的也可以达到同样的效果.注意.有些文件的访问需要更高的权限.这里暂且去掉那些文件目录的搜索.不然会出现erro ...

  9. zoj 1366 Cash Machine

    01背包加变形 动态规划的时候就犯浑了,每个状态都要记录的,我却只记录了当前状态的!! #include<stdio.h> #include<string.h> int max ...

  10. JS图表组件 highcharts 简单的介绍

    把highcharts拿来做个简单的介绍,希望更多的朋友可以用到这个用来做图表的js插件. preparation Highcharts Highcharts是一个制作图表的纯Javascript类库 ...