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

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

一、派生类的声明方式

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

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. The type javax.servlet.http.HttpServletRequest cannot be resolved.

    The type javax.servlet.http.HttpServletRequest cannot be resolved. It is indirectly referenced from ...

  2. WebApi服务

    WCF 它利用TCP.HTTP.MSMQ等传输协议构建“契约先行”的服务.WCF最初为基于SOAP的服务而设计[xml],繁琐.冗余.慢.沉重 WebApi 基于http协议,轻量级的,支持URL路由 ...

  3. ExtJS4.2学习(二)——入门基础

    1.工程的目录结构: src里放后台的文件,WebRoot里放前台的文件. index.html或者index.jsp等是整个项目的首页,在首页我们要引入ExtJS的CSS样式文件和ExtJS的核心类 ...

  4. Django Web开发【1】Django简介

    前言 看完<Django Book>之后, 总想找个实例来实战开发下,无奈国内Django的书籍相当少,只能从英文书籍中吸取养料,偶然之后得到Learning Website Develo ...

  5. 简单使用 PHP Phar 打包php代码 笔记

    Phar简介:Phar 归档的概念来自 Java™ 技术的 JAR 归档,它允许使用单个文件打包应用程序,这个文件中包含运行应用程序所需的所有东西.该文件不同于单个可执行文件,后者通常由编程语言生成, ...

  6. OSCache报错error while trying to flush writer

    Struts2.3+spring3+hibernate3开发现在想在原有基础上使用 oscache提高性能,使用中发现问题例如:使用struts2标签<cache:cache time=&quo ...

  7. JAVA GUI学习 - JPopupMenu鼠标右键菜单组件学习

    public class JPopmenuKnow { public void test() { //为表格添加鼠标右键菜单 JMenuItem jMenuItemFileInfo = new JMe ...

  8. 12.04 如何更专业的使用Chrome开发者工具

    顾名思义Chrome开发工具就是一个工具,它允许Web开发人员可以通过浏览器应用程序干预和操作Web页面,也可以通过这个工具调试和测试Web页面或Web应用程序.有了这个工具,你可以做很多有趣的事情: ...

  9. Linux中环境变量到底写在哪个文件中?解析login shell 和 no-login shell

    login shell:取得bash 时需要完整的登入流程,就称为login shell.举例来说,同tty1~tty6登入时, 需要输入用户名和密码,此时取得的bash就称为login shell ...

  10. CodeForces 154B- Colliders

    预处理...由于10^5<2^20..所以每个数的质因子个数最多20个..为了避免重复运算..将素有数的质因子打表出来... 两个数如果互质..那么他们的最大公约数为1..反过来说..两个数如果 ...