目录
类与类之间的关系
继承(一个类的属性是继承父类过来的):比如编辑框类、标签类、按钮类与控件类的关系
复合(一个类包含其他类):比如窗口和控件之间的关系
继承
1、分类:
单继承(只有一个父类)
多继承(有多个父类) 比如:复印打印一体机继承复印机和打印机
2、子类和父类
父类也叫基类,是被继承者。子类也叫派生类,是继承者。
3、继承意义
减少代码冗余,提高程序开发效率。
4、何时可以用继承
若在逻辑上B是A的“一种”,并且A的所有功能和属性对B而言都有意义,只是B类多了一些独有的特性,则允许B继承A的功能和属性。
5、继承方式
public(常用)、protected、private
6、注意点
构造和析构不能被继承。
三种继承方式的关系
派生类
1、书写格式
Class 派生类名 :继承方式 基类名 注:继承方式有public、protected、private,一般用public
{
派生类独有属性的声明;
}; 分号不要漏
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2、注意点
- 基类中的数据成员要在派生类用到的话,基类的数据成员访问权限要写成protected。
- 如果派生类中没有重定义基类中的函数,那么调用的时候是走基类中的函数。如果派生类中有重定义该函数,那么调用的时候就走派生类重定义的函数。重定义的首部基类和派生类要一样。
- 派生类创建对象会先走基类的构造,再走派生类的构造。释放对象的时候先走派生类的析构,再走基类的析构。
- 基类的数据成员初始化可以在基类的构造函数直接初始化,派生类就不用再初始化了。(数据成员在哪个类中,就在哪个类初始化)
如何让程序走带参数的基类重载构造函数?
书写格式:
派生类名::派生类名(参数列表)
:基类名(参数列表)
{
代码区;
}
具体代码如下:(以标签为例)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
类指针
基类指针操作派生类对象,把派生类对象赋值给基类对象(安全)——多余的部分无法访问
派生类指针操作基类对象,把基类对象赋值给派生类对象(危险)——多态