从零开始的C++(类的继承)

一、类的继承

1、共性与个性
表达不同类型事物之间共有的属性和行为
个性用于刻画每种事物特有的属性和行为
2、共性表示为父类(基类),个性表示为子类(派生类)
子类继承父类
基类派生出子类

二、继承的基本语法

1、继承表
一个子类可以同时继承0~多个父类,每个父类的继承方式可以相同也可以不同
class 子类:继承方式1 父类1,
继承方式2,父类2…
{

}
2、继承方式
public 公有继承:父类的特性可通过子类向外拓展
private 私有继承:父类的特性只能为子类所有
protected 保护继承:父类的特性只能在继承链内拓展

三、继承的特点

1、公共特点(所有继承都有的特点)
子类对象可以当作父类对象使用,子类对象与父类没有本质上的区别
子类的逻辑空间小于父类,物理空间要大于等于父类
子类对象 IS A 父类对象
2、向上和向下转换(造型)
从子类到父类:子类的指针或引用可以隐式转换成父类的指针或引用,这是一种缩小类型的转换,对于编译器来说是安全的
从父类到子类:父类的指针或引用不可以转化成子类的指针或引用,这是一种扩大类型的转换,在编译器看来是非常危险的
编译器仅仅是检查指针或引用的数据类型,而对实际引用的目标对象不关心(构成多态的基础)。
类型一致:父类的指针或引用实际的目标类型是否需要转换成实际的指针或引用由程序员自己决定
3、子类会继承父类的所有成员(公开、私有、保护)
4、子类会隐藏父类的同名成员
1、可以通过域限定符 父类::隐藏成员 进行访问父类中的隐藏成员
2、可以使用父类的指针或引用来指向子类对象,然后访问父类中的隐藏成员。
5、虽然子类中继承了所有父类中的成员,但不能访问父类中的私有成员。

继承方式影响访问控制

1、访问控制限定符:

访问限定符 内部 子类 外部 友元
public 1 1 1 1
protected 1 1 0 1
private 1 0 0 1

2、不同继承方式对基类成员的可见性

基类中的 在公有子类中变成 在保护子类中变成 在私有子类中变成
公有成员 公有成员 保护成员 私有成员
保护成员 保护成员 保护成员 保护成员
私有成员 私有成员 私有成员 私有成员

猜你喜欢

转载自blog.csdn.net/weixin_45050225/article/details/99756187