C++ 继承方式 //语法:class 子类 :继承方式 父类 //继承方式 三种: //1.公共继承 //2.保护继承 //3.私有继承
1 //继承方式
2 //语法:class 子类 :继承方式 父类
3 //继承方式 三种:
4 //1.公共继承
5 //2.保护继承
6 //3.私有继承
7
8 #include <iostream>
9 #include <string>
10 using namespace std;
11
12 //继承方式
13 //1.公共继承
14 class Base1
15 {
16 public:
17 int m_A;
18 protected:
19 int m_B;
20 private:
21 int m_C;
22
23 };
24 //1.公共继承
25 class Son1 :public Base1
26 {
27 public:
28 void func()
29 {
30 m_A = 10; //父类中的公共权限成员 到子类中依然是 公共权限
31
32 m_B = 20; //父类中的公共权限成员,到子类依然是 保护权限
33 //类内可以访问 类外不可以访问
34
35 //m_C = 30; //父类中的私有全程成员,到子类中 访问不到
36 }
37 };
38
39 void test01()
40 {
41 Son1 s1;
42 s1.m_A = 100;
43 //s1.m_B = 100; //类内可以访问 类外不可以访问
44
45
46 }
47 //保护继承
48 class Base2
49 {
50 public:
51 int m_A;
52 protected:
53 int m_B;
54 private:
55 int m_C;
56
57
58 };
59
60 class Son2 : protected Base2
61 {
62 public:
63 void func2()
64 {
65 m_A = 100; //父类中公共成员到 子类中变为保护权限
66 m_B = 100; //没有发生变化 还是私有成员
67
68 //m_C = 100; //父类中私有成员 子类访问不到
69 }
70 };
71
72 void test02()
73 {
74 Son2 s2;
75 //s2.m_A = 1000; //在Son2中已经变为了 保护权限 所以类外 访问不到
76 //s2.m_B = 200; //在Son2中已经变为了 保护权限 所以类外 访问不到
77 //s2.m_C = 551; //私有成员不可以访问
78
79
80 }
81 //私有继承
82 class Base3
83 {
84 public:
85 int m_A;
86 protected:
87 int m_B;
88 private:
89 int m_C;
90
91 };
92 class Son3 :private Base3
93 {
94 public:
95 void func3()
96 {
97 m_A = 100; //父类中公共成员到子类中变为 私有成员
98
99 m_B = 200; //父类中保护成员到子类中变为 私有成员
100
101 //m_C = 120; //父类中的私有成员 子类不可以访问
102 }
103
104 };
105 class GrandSon4 : public Son3
106 {
107 public:
108 void func4()
109 {
110 //m_A = 1000; //到了 Son3中 m_A 变为私有,即使是 儿子也访问不到
111 //m_B = 2000; //到了 Son3中 m_A 变为私有,即使是 儿子也访问不到
112 }
113
114 };
115 void test03()
116 {
117 Son3 s3;
118
119 //s3.m_A = 200; //到Son3中 变为私有成员 访问不到
120 //s3.m_B = 100; //到Son3中 变为私有成员 访问不到
121 //s3.m_C = 300; //父类中的私有成员 子类不可以访问
122
123 }
124
125 int main()
126 {
127
128
129 system("pause");
130
131 return 0;
132
133 }
C++ 继承方式 //语法:class 子类 :继承方式 父类 //继承方式 三种: //1.公共继承 //2.保护继承 //3.私有继承的更多相关文章
- [面向对象之继承应用(在子类派生重用父类功能(super),继承实现原理(继承顺序、菱形问题、继承原理、Mixins机制),组合]
[面向对象之继承应用(在子类派生重用父类功能(super),继承实现原理(继承顺序.菱形问题.继承原理.Mixins机制),组合] 继承应用 类与类之间的继承指的是什么'是'什么的关系(比如人类,猪类 ...
- 官网安装Python包太慢?教你三种下载安装方式-PiP、conda、轮子,教你三种Pytorch的下载安装方式,保证你再也不用出现Error
上一期我们介绍了CUDA下载安装以及其总结,这一期教大家如何在Anaconda中使用CUDA来进行加速.神经网络依赖cuDNN的下载安装,以及下载和安装Pytorch-GPU安装包的三种方式(cond ...
- Second Day: 关于Button监听事件的三种方法(匿名类、外部类、继承接口)
第一种:通过匿名类实现对Button事件的监听 首先在XML文件中拖入一个Button按钮,并设好ID,其次在主文件.java中进行控件初始化(Private声明),随后通过SetOnClickLis ...
- 创建多线程的第一种方式——创建Thread子类和重写run方法
创建多线程的第一种方式——创建Thread子类和重写run方法: 第二种方式——实现Runnable接口,实现类传参给父类Thread类构造方法创建线程: 第一种方式创建Thread子类和重写run方 ...
- Effective C++ 第二版 40)分层 41)继承和模板 42)私有继承
条款40 通过分层来体现"有一个"或"用...来实现" 使某个类的对象成为另一个类的数据成员, 实现将一个类构筑在另一个类之上, 这个过程称为 分层Layeri ...
- C++中的三种继承关系
C++中的三种继承关系 先看类中声明成员时的三种访问权限 public : 可以被任意实体访问 protected : 只允许子类及本类的成员函数访问 private : 只允许本类的成员函数访问 在 ...
- Java并发编程:Java创建线程的三种方式
目录 引言 创建线程的三种方式 一.继承Thread类 二.实现Runnable接口 三.使用Callable和Future创建线程 三种方式的对比 引言 在日常开发工作中,多线程开发可以说是必备技能 ...
- js oop中的三种继承方法
JS OOP 中的三种继承方法: 很多读者关于js opp的继承比较模糊,本文总结了oop中的三种继承方法,以助于读者进行区分. <继承使用一个子类继承另一个父类,子类可以自动拥有父类的属性和方 ...
- 【朝花夕拾】Android自定义View篇之(四)自定义View的三种实现方式及自定义属性使用介绍
前言 转载请声明,转自[https://www.cnblogs.com/andy-songwei/p/10979161.html],谢谢! 尽管Android系统提供了不少控件,但是有很多酷炫效果仍然 ...
- JS面向对象(3) -- Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...
随机推荐
- javascript的getTime函数
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content=&q ...
- 虚拟机安装Windows7旗舰版-超详细图文
虚拟机安装Windows7旗舰版 ----就是想弄一个自己用的CTF+渗透测试的工具集成系统,本来想着用真实机弄就好了,但还是出于安全的考虑,还是再装个虚拟机吧~ 1.先到MSDN找好安装包:http ...
- 跟我一起学Go系列:Go gRPC 安全认证机制-SSL/TLS认证
Go gRPC 系列: 跟我一起学Go系列:gRPC 拦截器使用 跟我一起学Go系列:gRPC 入门必备 第一篇入门说过 gRPC 底层是基于 HTTP/2 协议的,HTTP 本身不带任何加密传输功能 ...
- python导入模块--案例
1 导入模块 1.1 问题 本案例要求先编写一个star模块,主要要求如下: 建立工作目录 ~/bin/ 创建模块文件 ~/bin/star.py 模块中创建pstar函数,实现打印50个星号的功能 ...
- zset如何解决内部链表查找效率低下
zset作为有序集合,内部基于跳表或者说索引的方式实现了数据的快速查找.解决了链表查询效率低下的痛点 前言 紧接前文我们学习了Redis中Hash结构.在里面我们梳理了字典这个重要的内部结构并分析了h ...
- MySql:Linux下安装MySQL-5.7.12.tar.gz
一 官网下载 mysql-5.7.12-linux-glibc2.5-x86_64.tar.gz 目前最新为5.7.16,可以直接下载mysql-5.7.16-linux-glibc2.5-x86_ ...
- Mybatis逆向工程生成类文件
首先,我们需要建好相关文件夹目录: 然后,编写执行脚本 generator.xml : 1 <?xml version="1.0" encoding="UTF-8& ...
- shiro框架整合ssm框架
下面我通过一个web的maven项目来讲解如何将shiro整合ssm框架,具体结构如下图 一.引入依赖的jar包 <?xml version="1.0" encoding=& ...
- mysql中的空值
空值,即NULL,在数据库中通过is null 和is not null来查询 陷阱一:空值不一定为空 空值是一个比较特殊的字段.在MySQL数据库中,在不同的情形下,空值往往代表不同的含义.这是My ...
- iOS基于AVFoundation实现朗读文字
iOS基于AVFoundation实现朗读文字 1.心理建设 众所周知AVFoundation的朗读是个智障语气,所以想不花钱就只能忍着. 2.speechManager @import AVFoun ...