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

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

一、派生类的声明方式

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

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. Javascript获取浏览器版本

    前两天有朋友请教我这个问题,说现在网上的资料太过于混乱不完整,我这里先简单整理一部分. 0 (function(){ 1   2 var ver = window.navigator.userAgen ...

  2. jacksons转换大小写处理

    import com.fasterxml.jackson.databind.ObjectMapper; 1.注意导入的objectMapper包一致 另:jackson的注解大全 https://gi ...

  3. 使用反射类、Class类获取指定的构造器并实例化对象

    package com.test; public class Car { private String brand; private String color; private int maxSpee ...

  4. CPUから広がり

    处理技术: 超标量是通过内置多条流水线来同时执行多个处理器,其实质是以空间换取时间.而超流水线是通过细化流水.提高主频,使得在一个机器周期内完成一个甚至多个操作,其实质是以时间换取空间. スター: 真 ...

  5. while 、do...while 、for

    1.while 特点:只有条件成立才会执行循环体. while陷阱: while(条件);即直接加分号 2.do while 特点:一定会执行一次循环体 3.for语句 l   初始化等可以是多句(把 ...

  6. Fedora 19下Guacamole的安装使用

    由于我要使用RDP实现web远程桌面,因此需要用到了Guacamole这个开源的软件.之前用Ubuntu12.04折腾了一晚上,也没有找到依赖库文件,而Guacamole的官方安装说明却没有介绍这个依 ...

  7. ES6新特性简介

    ES6新特性简介 环境安装 npm install -g babel npm install -g babel-node //提供基于node的REPL环境 //创建 .babelrc 文件 {&qu ...

  8. WinAPI: GetVolumeInformation - 读取文件系统信息

    //声明: GetVolumeInformation(   lpRootPathName: PChar;              {磁盘驱动器代码字符串}   lpVolumeNameBuffer: ...

  9. ThinkPHP 3 的CURD介绍

    本节课大纲: 一.ThinkPHP 3 的CURD介绍 (了解) 二.ThinkPHP 3 读取数据 (重点) 对数据的读取 Read $m=new Model('User'); $m=M('User ...

  10. BZOJ 1717 [Usaco2006 Dec]Milk Patterns 产奶的模式(后缀数组)

    [题目链接]http://www.lydsy.com/JudgeOnline/problem.php?id=1717 [题目大意] 求一个最长的串,使得其在母串中出现的次数达到要求 [题解] 二分答案 ...