一、类的继承
- 共性与个性:共性就是表达不同事物之间共有的属性和行为,个性用于刻画每种事物特有的属性和行为
- 共性表示为父类(基类),个性表示为子类(派生类)。
- 子类继承自父类,基类派生出子类
二、继承的基本语法
- 继承表
- 一个子类可以同时继承零到多个父类,每个父类的继承方式可以相同也可以不同
class 子类:继承方式1 父类1,继承方式2 父类2...
- 继承方式
- public 公有继承:父类的特性可以通过子类向外扩展。
- private 私有继承:父类的特性只能为子类所有。
- protected 保护继承:父类的特性只能在继承链内扩展。
三、继承的基本特点
- 公共特点(所有继承都有的特点)
- 子类对象可以当做父类对象使用,子类对象与父类对象没有本质上的区别。
- 子类的逻辑空间小于父类,在物理空间大于等于父类。
- 子类对象 IS A 父类对象
- 向上和向下转换(造型)
- 从子类到父类:子类的指针或引用可以隐式转换成父类的指针或引用,这是一种缩小类型转换,对于编译器来说是安全的,(父类指针指向子类对象是安全的)
- 从父类到子类:父类指针或引用不可以转换成子类的指针或引用,只是一种扩大类型的转换,在编译器看来这是危险的。(子类的指针指向父类的对象是不安全的)
- 编译器仅仅是检查指针或引用的数据类型,而对实际引用的目标对象不关心(构成多态的基础)。
- 类型一致:父类的指针或引用类型是否需要转换成实际的指针或引用由程序员自己决定。
- 子类会继承父类的所有成员(公开、私有、保护)
- 子类会隐藏父类的同名成员
- 可以通过域限定符父类名::隐藏成员名 进行访问父类中的隐藏成员
- 可以使用父类的指针或引用来指向子类对象,然后访问父类中的隐藏成员
- 虽然子类中继承所有父类中的成员,但不能访问父类的私有成员
四、继承方式影响访问控制
-
访问控制限定符:
访问限定符 内部 子类 外部 友元 public yes yes yes yes private yes no no yes protected yes yes no yes 父类中 公有子类 私有子类 保护子类 public public private protected private private private private protected protected protected protected