c++/oop---继承与派生
c++/oop---继承与派生
继承:在定义一个新的类 B 时,如果该类与某个已有的类 A 相似 (指的是 B 拥有 A 的全部特点),
那么就可以把 A 作为一个基类,而把 B 作为基类的一个派生类 (也称子类)。
逻辑:B对象也是一个A对象
派生类是通过对基类进行修改和扩充得到的。
扩充: 在派生类中,可以添加新的成员变量和成员函数
修改: 在派生类中,可以重新编写从基类继承得到的成员
派生类一经定义后,可以独立使用,不依赖于基类。
写法:
class 派生类名:派生方式说明符 基类名
派生方式
公有继承 (public)
公有继承的特点是基类的公有成员和保护成员作为派生类的成员
时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不
能被这个派生类的子类所访问。
1基类成员对其对象的可见性:
公有成员可见,其他不可见。这里保护成员同于私有成员。
2 基类成员对派生类的可见性:
公有成员和保护成员可见,而私有成员不可见。这里保护成员同于
公有成员。
3 基类成员对派生类对象的可见性:
公有成员可见,其他成员不可见。
私有继承 (private)
私有继承的特点是基类的公有成员和保护成员都作为派生类的私有
成员,并且不能被这个派生类的子类所访问。
1基类成员对其对象的可见性:
公有成员可见,其他成员不可见。
2 基类成员对派生类的可见性:
公有成员和保护成员是可见的,而私有成员是不可见的。
3 基类成员对派生类对象的可见性:
所有成员都是不可见的。
保护继承 (protected)
保护继承的特点是基类的所有公有成员和保护成员都成为派生类的
保护成员,并且只能被它的派生类成员函数或友元访问,基类的私
有成员仍然是私有的。
基类成员对其对象的可见性:
公有成员可见,其他不可见。这里保护成员同于私有成员。
2 基类成员对派生类的可见性:
公有成员和保护成员是可见的,而私有成员是不可见的。
3 基类成员对派生类对象的可见性:
所有成员都是不可见的。 (完全同私有继承)
派生类对象的大小,等于基类对象的大小,再加上派生类对象自己的成
员变量的大小。在派生类对象中,包含着基类对象,而且基类对象的存
储位置位于派生类对象新增的成员变量之前。
覆盖:
派生类中的成员可以和基类中的成员同名,默认情况下会调用派生类的成员
调用基类成员的时候要用 ::
一般不会定义同名成员变量