面向对象程序设计#7组合与继承

利用已经创建好的类实现新的类(复用类)

组合——复用类的生成

将一个类的对象作为另一个类的对象

对象成员语法也包含

对象成员

包含已有类对象作为成员,可以通过成员对象使用已有类的功能

如果作为公有成员还可以包含成员对象发送消息

组合一个已有类的对象作为新类成员的称为“按值包含”来实现all—part关系

对象成员的初始化

和普通初始化没太大差别

复用类的实现

简单灵活复用已有类

有效的方法

新类封装已有类

指针成员与聚合关系

UML中聚合也描述组成关系,但是比组合更松散

聚合的特点是成员对象可以独立于聚合对象存在

聚合对象中包含成员类对象指针

实现一般借助数组或vector之类的标准容器

继承——复用类的接口

泛化关系和继承

描述概念的层次或分类

如:门、纲、目..........

这个关系被称为泛化(UML)或者继承(cpp)

在“门”中定义“目”,且顶层指针可以处理其中的地址

被继承已有类被称为基类,继承得到新类被称为派生类,派生类可以继续被继承,这样层次被称为继承层次

继承的语法

class 派生类的名字:[访问限定符] 基类名字

{成员声明};

基类成员在派生类的可见性

成员在基类的访问限定

继承使用的访问限定

改变个别成员的可访问性

using申明可以在派生类中调整个别基类成员的访问限制

派生类只能为它访问的名字使用

公用继承私有继承

公有:继承所有接口

私有:继承所有数据和功能

           可以使成员隐藏在基类中,避免误操作

派生类对象的结构

派生类对象由其基类子对象以及派生类自己的非静态数据成员构成

存顺序:父类 子类

删: 子类 父类

禁止继承的类

在类后面加关键字 final

static成员继承

在继承层次中只存在该成员的唯一定义

派生类和基类的不同

子类不同于父类

子类对父类的两种修改方式

        隐藏或覆盖(override)

        扩充 

任何需要&父类的地方,都可以由其公有&派生类的对象代替

向上类型转换 

会发生对象切片(safe)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值