C艹之路 1.1f继承与派生,多态与虚函数
2020-01-08 本文已影响0人
农家小升
抽象,封装,继承,多态这是面向对象的四个特点
抽象,封装指的类的声明
继承指的是类的继承
封装
封装
派生类
class 派生类名 : [继承方式] 基类名
{派生类新增的成员};
继承方式有:public(公用的),private(私有的),protected(受保护的)
,默认为private(私有的)
继承有三部分工作
1.接受全部基类成员,但不接受基类的构造函数与析构函数
2.调整成员:改变访问属性;
3.增加新成员
访问属性
- 公用继承
基类 | 继承方式 | 派生类 |
---|---|---|
私有 | 公用 | 不可访问 |
公用 | 公用 | 公用 |
保护 | 公用 | 保护 |
- 私有继承
基类 | 继承方式 | 派生类 |
---|---|---|
私有 | 私有 | 不可访问 |
公用 | 私有 | 私有 |
保护 | 私有 | 私有 |
- 保护继承
基类 | 继承方式 | 派生类 |
---|---|---|
私有 | 保护 | 不可访问 |
公用 | 保护 | 保护 |
保护 | 保护 | 保护 |
多级派生
派生的构造与析构函数
简单派生
有子对象派生
派生类的构造函数,需要把子类对象放在基类后面基类(),子对象()
后面{}
才是自己的参数赋值多层派生
派生的特殊形式
派生类的析构
多重继承
尤其注意多重继承的歧义
我继承的是b还是c(如果b,c里面有相同的内容的话)
class D:public A,private B,protected C {类D新增成员}
- 虚基类
class D:virtual p** A
基类与派生类转换
继承与组合
多态与虚函数[只支持类,不支持多态,不能被称为OOB语言]
同个消息,但是不同对象收到后会有不同的行为 在C++中,不同功能的函数可以使用相同的函数名,从而可以用相同的函数名调用不同的函数
- 利用虚函数实现动态多态性
virtual
放在void
前面即可(设置在基类函数上,主要是考虑到子类函数调用)