父类和子类的关系
- 子类继承父类的所有属性和行为;
- 子类可以定义自己的属性和行为;
父类和子类的继承
在类中,变量有三种属性,分别为public,protectd,private;
其区别如下:
变量属性 | 说明 |
---|---|
public | 可以被基类及其对象访问; |
protected | 可以被基类以及其派生类访问,但是不能被基类对象和派生类对象访问 |
private | 只能被基类访问 |
子类对父类的继承有三种方式:public,protectd,private;其继承方式指的是对父类成员的访问方式。
public继承 | 父类 | 子类 | 父类对象 | 子类对象 |
---|---|---|---|---|
public属性 | √ | √ | √ | √ |
protected属性 | √ | × | √ | × |
private属性 | √ | × | × | × |
protected继承 | 父类 | 子类 | 父类对象 | 子类对象 |
---|---|---|---|---|
public属性 | √ | √ | √ | √ |
protected属性 | √ | × | √ | × |
private属性 | √ | × | × | × |
private继承 | 父类 | 子类 | 父类对象 | 子类对象 |
---|---|---|---|---|
public属性 | √ | √ | √ | √ |
protected属性 | √ | × | × | × |
private属性 | √ | × | × | × |
虚继承是在多重继承时,继承的父类有共同的父类,此时只创建一份父类的父类
父类和子类的构造和析构
再新建类时,需要调用构造函数,构造函数先进行初始化,再执行构造函数的函数体,因此新创建调用父类的构造函数再调用子类的构造函数;
有多重继承时,类的创建顺序和继承顺序有关,和初始化顺序无关;
父类和子类的转换
子类中包含有父类:因此子类可以初始化父类的指针和引用,但是不能初始化父类对象;父类不能初始化子类。