博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
公有继承
阅读量:5332 次
发布时间:2019-06-14

本文共 1220 字,大约阅读时间需要 4 分钟。

-----------------siwuxie095

   

   

   

   

   

   

   

   

   

继承方式

   

   

C++ 中,继承方式一共有 3 种:

   

   

   

三个关键字:

   

1)public:A 公有继承了 B

2)protected:A 保护继承了 B

3)private:A 私有继承了 B

   

   

这里主要介绍 公有继承

   

   

   

   

   

公有继承

   

   

1)public 访问限定符在公有继承中的特性

   

看如下实例:

   

定义一个人类:Person 和 一个工人类:Worker,工人类公有继承了人类

   

   

   

   

当工人类 public 的继承了人类后,人类中的数据成员和成员函数在工人类

中是不用再写的,但却存在于工人类中(工人类中红色标记的部分),而且

工人类可以访问人类的数据成员和成员函数

   

再仔细观察,发现:当 Worker 公有继承了 Person 时,Person 中 public

下所有的成员都会被继承到 Worker 中 public 下

   

   

   

在使用时:Worker 可以调用父类 Person 的数据成员和成员函数

   

   

   

   

   

   

2)protected 访问限定符在公有继承中的特性

   

protected 在不涉及继承的情况下,与 private 的特性是一样的,当涉及到

继承时,protected 就能显示出它的特点了

   

对刚才的实例作如下修改:

   

   

   

对于 Person 中 protected 和 private 下的数据成员,在使用时是不能

直接访问的,因为它们并不在 public 下面,计算机就会禁止访问

   

   

   

此外,当实现成员函数 eat() 时,假如在其中访问 名字(m_strName)

和 年龄(m_iAge),是可以正常访问的

   

   

   

   

但当涉及到继承时,public 下的成员继承到 public 下,protected 下

的成员继承到 protected 下

   

   

   

继承下来后,就可以通过子类 Worker 中的成员函数 work() 来访问从

父类 Person 中继承来的 m_iAge 了

   

   

   

   

   

(3)private 访问限定符在公有继承中的特性

   

public 下的成员继承到 public 下,private 下的成员则被继承到

Worker 下不可见的位置,而不是 private 下

   

   

   

因为被继承到不可见位置,所以使用子类 Worker 中的成员函数 work()

调用父类 Person 的数据成员 m_iAge 就是被禁止的,程序也会编译出错

   

   

   

   

   

总结:

   

当两个类产生了继承关系,如果它们的继承方式是 public:

   

1)基类中 public 下的成员将被继承到派生类中 public 下

2)基类中 protected 下的成员将被继承到派生类中 protected 下

3)基类中 private 下的成员在派生类中将无法直接访问,没有被继承到派生类中 private 下

   

   

   

   

   

   

   

   

   

   

   

【made by siwuxie095】

转载于:https://www.cnblogs.com/siwuxie095/p/6801417.html

你可能感兴趣的文章
asp.net 写入excel时,不能更新。数据库或对象为只读。
查看>>
linux清空日志文件内容 (转)
查看>>
jsp中对jstl一些标签的引用方式
查看>>
安卓第十三天笔记-服务(Service)
查看>>
Servlet接收JSP参数乱码问题解决办法
查看>>
【bzoj5016】[Snoi2017]一个简单的询问 莫队算法
查看>>
Ajax : load()
查看>>
分布式版本控制系统
查看>>
MySQL-EXPLAIN执行计划Extra解释
查看>>
Zookeeper概述
查看>>
Zookeeper一致性级别
查看>>
单例模式的几种实现方式及对比
查看>>
第十二周学习记录
查看>>
HDU 1712 ACboy needs your help (分组背包模版题)
查看>>
共享内存
查看>>
从零开始学JavaWeb
查看>>
第33天-文件I/O _2(2013.09.03)
查看>>
讨厌的 StorageFolder.GetFileAsync 异常。
查看>>
Tomcat源码浅析
查看>>
Codeforces Round #256 (Div. 2) Multiplication Table
查看>>