5. 继承与派生

通过继承已有类的部分或者全部成员,创建新类的过程称为派生,继承是面向对象程序设计的特点之一。

5.1 继承

定义:若定义类A时,使用了已有类B的部分或全部成员,则类A继承了类B,成类B为基类或父类,成类A为派生类或子类。

一个派生类又可作为另一个类的基类,一个基类也可派生出若干个派生类,这样就构成类树,或类族。

从 已有类派生新类时,可对派生类做以下变化:

  1. 全部或部分继承基类的成员数据或成员函数
  2. 增加新成员变量增加新成员函数
  3. 重定义基类的成员函数
  4. 改变现有的成员属性
    c++中继承分为单一继承和多重继承。当派生类宏仅有一个基类时,成为单一继承。否则为多重继承。

5.1.1 单一继承

从一个基类派生一个类的格式:

class ClassName:<Access> BaseClassName
{
    ...//派生类中新增成员,可为空
};

Access为public,private,protected之一。

5.1.1.1 公有派生

公有派生时,基类中所有成员在公有派生类中保持各个成员的原有访问权限。

基类的public成员,在派生类中仍为public
基类的private成员,在派生类中仍为private成员。派生类不能直接使用基类中的私有成员,只能通过该基类公有的或保护的成员函数间接使用基类中的私有成员。
protected成员,在派生类中可直接使用它们,但在派生类外,不可直接访问这些成员,必须通过派生类的公有成员函数或基类的公有成员函数才能访问。

5.1.1.2 私有派生

基类中公有成员和保护成员在派生类中均变为私有的,但在派生类中仍可直接使用这些成员。

在派生类外均不可直接使用基类的公有或私有成员,这些成员必须通过派生类中的公有成员函数来间接使用,对于基类的私有成员不可直接使用。

5.2 抽象类

若一个类不能定义对象而只能做基类来派生新类,成为抽象类。

作用:

若该类的构造函数或析构函数的访问权限为protected,则此类为抽象类。因在定义此类的对象时,在类外要调用该类的构造函数,而其是私有的。但在公有派生类中,可调用保护成员。
含有纯虚函数的类为抽象类
若把类中的构造函数或析构函数说明为private,这样的类毫无意义,因为不能产生对象,也不能产生派生类。

5.3 多重派生

格式:

class 类名:<Access>类名1,...<Access> 类名 n
{
    ...//派生类新增成员
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值