C++具有三大特性,继承、封装、多态。
继承:一个对象直接使用了另一个对象的属性和方法。
优点:
(1)减少重复的代码
(2)继承是多态的前提
(3)继承增加了类的耦合性
Struct是子类,也称派生类, public为继承方式,Person为父类,也成为基类
class Student:public Person
{
public:
};
继承方式也分三类:public继承、protected继承、private继承
基类的private成员在派生类中是不能被访问的
基类的protected成员不能在类外被直接访问,需要在派生类中才能访问
无论那种继承方式,在派生类内部都可以访问基类的公有成员和保护成员,基类的私有成员存在但是在子类中不能访问。
class Struct:Person //默认继承方式为private
struct Struct :Person//默认继承方式为public
?
单继承:派生类只有一个父类
class person;
class student:public person;
多继承:派生类有多个直接父类
class person;
class name;
class student : public person , public name;
菱形继承:派生类有多个直接父类,多个直接父类继承自同一个父类,存在数据冗余和二义性问题
class person;
class student :public person; class teacher:public person;
class assistant: public student,public teacher;
菱形虚拟继承:在菱形基础上解决了菱形继承的数据冗余和二义性问题
继承的继承与转换:
1、子类对象可以赋值给父类对象
2、父类对象不能赋值给子类对象
3、父类的指针/引用可以指向子类对象
4、子类指针/引用不能指向父类对象,但是可以通过强转来完成
注意事项:
1、友元,友元关系是不能继承的,基类的友元成员不能访问派生类的protected成员和private成员。
2、静态成员变量:如果在基类中定义了static成员,那么整个继承体系只能由一个这样的成员,无论派生多少子类
3、类的6个默认函数是不能被继承的。
|