c++/oop---继承与派生


c++/oop---继承与派生

继承:在定义一个新的类 B 时,如果该类与某个已有的类 A 相似 (指的是 B 拥有 A 的全部特点),

那么就可以把 A 作为一个基类,而把 B 作为基类的一个派生类 (也称子类)。

逻辑:B对象也是一个A对象

派生类是通过对基类进行修改和扩充得到的。

扩充: 在派生类中,可以添加新的成员变量和成员函数

修改: 在派生类中,可以重新编写从基类继承得到的成员

派生类一经定义后,可以独立使用,不依赖于基类。 

写法:

class 派生类名:派生方式说明符 基类名

派生方式

公有继承 (public)
公有继承的特点是基类的公有成员和保护成员作为派生类的成员
时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不
能被这个派生类的子类所访问。

1基类成员对其对象的可见性:
公有成员可见,其他不可见。这里保护成员同于私有成员。
2 基类成员对派生类的可见性:
公有成员和保护成员可见,而私有成员不可见。这里保护成员同于
公有成员。
3 基类成员对派生类对象的可见性:
公有成员可见,其他成员不可见。


私有继承 (private)
私有继承的特点是基类的公有成员和保护成员都作为派生类的私有
成员,并且不能被这个派生类的子类所访问。

1基类成员对其对象的可见性:
公有成员可见,其他成员不可见。
2 基类成员对派生类的可见性:
公有成员和保护成员是可见的,而私有成员是不可见的。
3 基类成员对派生类对象的可见性:
所有成员都是不可见的。 


保护继承 (protected)
保护继承的特点是基类的所有公有成员和保护成员都成为派生类的
保护成员,并且只能被它的派生类成员函数或友元访问,基类的私
有成员仍然是私有的。 

基类成员对其对象的可见性:
公有成员可见,其他不可见。这里保护成员同于私有成员。
2 基类成员对派生类的可见性:
公有成员和保护成员是可见的,而私有成员是不可见的。
3 基类成员对派生类对象的可见性:
所有成员都是不可见的。 (完全同私有继承)

派生类对象的大小,等于基类对象的大小,再加上派生类对象自己的成
员变量的大小。在派生类对象中,包含着基类对象,而且基类对象的存
储位置位于派生类对象新增的成员变量之前。

覆盖:

派生类中的成员可以和基类中的成员同名,默认情况下会调用派生类的成员

调用基类成员的时候要用 ::

一般不会定义同名成员变量