类的继承与派生

        所谓继承就是从先辈处得到属性和行为特征。类的继承,是新的类从已有类那里得到已有的特征。从已有类产生新类的过程就是类的派生。类的继承与派生机制允许程序员在保持原有类特性的基础上,进行更具体、更详细的修改和扩充。由原有类产生新类时,新类便包含了原有类的特征,同时也可以加入自己所特有的新特征。原有的类称为基类或父类,产生的新类称为派生类或子类。

        如果一个派生类同时有多个基类,这种情况称为多继承,这时的派生类便同时得到了多个已有类的特征。一个派生类也可以有一个直接基类,这种情况称为单继承。单继承可以看作是多继承的一个简单特例,而多继承又可以看作是单继承的组合。

        在派生过程中,派生出来的新类也同样可以作为基类再继续派生新的类,此外,一个基类也可以同时派生出多个派生类。也就是说,一个类从父类继承来的特征也可以被其他新的类成员所继承,一个父类的特征可以同时被多个子类继承。这样就形成了一个相互关联的类族。在类族中直接参与派生过程的基类称为直接基类,基类的基类甚至更高层次的基类称为间接基类。

派生类的定义

class 派生类名:继承方式 基类名1,继承方式 基类名2
{
    派生类成员声明
};

        其中继承方式规定了如何访问从基类继承的成员。在派生类的定义语句中,每一个继承方式后只限定跟随其后的基类。继承方式有3种,即public、protected和private,也就是常说的公有继承、保护继承和私有继承。在派生类的定义中,如果不显式的给出继承方式,系统将默认为私有(private)继承。类的继承方式指定了派生类成员以及类外对象对于从基类继承来的成员的访问权限。

派生类生成过程

主要包含3部分内容:吸收基类成员、改造基类成员、添加新的成员。

访问控制

         派生类继承了基类的全部数据成员和除了构造函数、析构函数以外的全部成员函数,但是这些成员的访问属性在派生的过程中是可以调整的。从基类继承的成员,其访问属性由继承方式控制。

        基类的成员可以有public(公有)、protected(保护)、private(私有)三种访问属性。基类的自身成员可以对基类中任何一个其他成员进行访问,但是通过基类的对象就只能访问该类的公有成员。

        类的继承方式有public(公有)、protected(保护)、private(私有)三种。不同继承方式导致原来的具有不同访问属性的基类成员在派生类中的访问属性也有所不同。

        当类的继承方式为公有继承时,基类的公有成员和保护成员的访问属性在派生类中不变,而基类的私有成员在派生类中不可直接访问。

        当类的继承方式为保护继承时,基类的公有成员和保护成员在派生类中的访问属性都变为保护的,而基类的私有成员在派生类中不可直接访问。

        当类的继承方式为私有继承时,基类的公有成员和保护成员在派生类中的访问属性都变为私有的,而基类的私有成员在派生类中不可直接访问。

 publicprotectedprivate
publicpublicprotected不可访问
protectedprotectedprotected不可访问
privateprivateprivate不可访问

表格所示,第一行为基类中的各数据成员的属性,第一列为继承方式。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值