博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第十一章 继承与派生 学习笔记
阅读量:6693 次
发布时间:2019-06-25

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

第十一章 继承和派生

 

1.单继承(子类只有有一个父类)&多继承(子类有多个父类)

2.派生类的声明方式

 

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

派生类新增加的成员

};

 

3.继承方式:

Public:(公有)

Private:(私有)

Protect:(保护)

4.派生类的构成:

从基类接收成员:(除构造和析构以外的所有成员)

调整从基类接收的成员:(改变访问属性)

对于新增同名成员函数:

如果参数列表相同:派生类覆盖基类

如果参数列表不同:函数重载

在声明派生类时增加的成员:(对基类的具体化)

5.派生类成员的访问属性

Public: 基类保持原有的访问属性

基类在派生类外可见,可以在类外引用基类公有成员;

Public->public

Private->不可访问

Protect->protect

Private:基类的公有成员不能在基类和派生类外被访问

基类在派生类外不可见

Public->private

Private->不可访问

Protect->private

Protect:不能被类外引用,可以被派生类的成员引用

基类在派生类外不可见,其下一层派生类可访问

Public->protect

Private->不可访问

Protect->protect

不可访问:*派生类成员函数不能直接访问基类私有成员;

6.多级派生的访问属性:只看上一级成员属性确定

7.派生类的构造函数和析构函数

(在执行派生类的构造函数时,调用基类的构造函数)

*一般派生类的构造函数

派生类构造函数名(总参数列表):基类构造函数名(参数表){

派生类新增数据成员初始化;

总参数列表:同时包括基类和派生类的参数(同时包括参数类型

 

*使用初始化列表:

参数表:调用基类构造函数(不加参数类型)

派生类构造函数名(总参数列表):基类构造函数名(参数表),新增数据成员(参数){};

 

*有子对象的派生类的构造函数

派生类构造函数名(总参数列表):基类构造函数名(参数表),子对象名(参数表){

派生类新增数据成员初始化;

 

*多层派生时的构造函数

(先构造基类,再构造子对象,最后构造派生类新增成员)

(不要列出每一层的派生类的构造函数,只需写出其上一层派生类的构造函数即可)

 

*派生构造函数的特殊形式

当不对派生类新增数据成员进行任何特殊初始操作,派生类构造函数的函数体为空。

如果基类没有定义构造函数,或者定义了没有参数的构造函数,那么派生类可以不写基类的构造函数,此时调用默认构造函数

 

析构函数:(先析构派生类新增成员,再析构子对象,最后析构基类)

8.多重继承

*声明多重继承的方法

Class 派生类名 :<继承方式> 基类1名, <继承方式> 基类2名,......

新增成员数据初始化;

 

*多重派生类的构造函数

派生类构造函数名(总参数表) 基类1构造函数(参数表),基类2构造函数(参数表)

派生类新增成员数据初始化语句;

 

*多重函数的二义性

 

9.虚基类(在继承简洁共同记录是只保留一份成员)

*虚基类声明方法

Class A

Class B : virtual <继承方式> A

Class C : virtual <继承方式> A

注意:虚基类并不是在声明基类时声明的,而是在声明派生类,指定继承方式时声明

Class 派生类名 : virtual <继承方式> 基类名

 

*虚基类的初始化(使用初始化列表)

在最后的派生类中不仅要负责对其基类进行初始化,还要负责对虚基类初始化。

 

尽量避免使用多继承

10.基类和派生类的转换

只有公有继承能较好的保留了基类的特征,因此,只有共有派生类才是基类真正的子类型。

只能用子类对象对其基类对象赋值,而不能用基类对象对其子类对象赋值。

11.继承和组合

继承(派生类)是纵向关系,组合(复合类)是横向关系。

转载于:https://www.cnblogs.com/hello-OK/p/7001025.html

你可能感兴趣的文章
关于ready和load方法作用于不同情况下的比较
查看>>
Asp.Net Core 项目实战之权限管理系统(8) 功能菜单的动态加载
查看>>
使用CSS让元素尺寸缩小时保持宽高比例一致
查看>>
HDU-2955-Robberies
查看>>
如何使Linux系统上的程序开机后自动运行 (转)
查看>>
Silverlight中 Content="{TemplateBinding Content}" bug
查看>>
Jsoup后台解析html、jsp网页
查看>>
中间件详解,Django复习
查看>>
微信小程序 md5加密
查看>>
python gui之tkinter事件处理
查看>>
Android Studio 1.1.0 切换主题和绑定 代码提示 快捷键
查看>>
读书笔记 UltraGrid(8)
查看>>
Spring Boot文档维护:集成Swagger2
查看>>
SharePoint 2010 部署架构
查看>>
BZOJ[3992][SDOI2015]序列统计 生成函数+NTT
查看>>
GUI自绘_其中左边树状菜单控件风格灵感来源于城市博物馆的壁灯效果。
查看>>
SSH 相关基础
查看>>
浅谈git和svn的区别
查看>>
JMETER 生成测试报告
查看>>
ScrollView中嵌套ListView
查看>>