文档章节

类的组合

世__界
 世__界
发布于 2015/05/30 17:15
字数 410
阅读 5
收藏 0

一.概念

类中的成员数据是另一个类的对象。

引入的原因:1.可以再已有的抽象的基础之上实现更复杂的抽象。

                    2.通过对复杂对象进行分解、抽象,使我们能够将一个复杂对象理解为简单对象的组合。

                    3.分解得到复杂对象的部分对象,这些对象比它高层的复杂对象更容易理解和实现。饭后由这些部件对象来“装配”复杂对象

二.类组合的构造函数的设计

  1. 原则:不仅要负责对本类中的基本类型成员数据赋初值,也要对对象成员初始化。

  2.声明形式:

        类名::类名(对象成员所需的形参,本类成员形参):对象1(参数),对象2(参数),..........

       {本类初始化}

三.类组合的构造函数的调用

顺序:先调用内嵌对象的构造函数(按内嵌时的声明顺序,先声明者先构造)。然后调用本类的构造函数。(析构函数的调用顺序相反)。

注意:若调用缺省构造函数(既无形参),则内嵌对象的初始化也将调用相应的缺省构造函数。

四.前向引用声明

  1. 原因:类应该先声明后使用,如果需要在某个类的声明之前引用该类,则应进行前向引用声明。

  2. 前向引用声明只为程序引入一个标识符,但具体声明在其他地方。

  3. 例:class B;

          class A

          {

           public:

                 void f(B b);

          };

        class B

       {

        public:

            void g(A a);

        }

© 著作权归作者所有

上一篇: 类模板
下一篇: 类中的函数
世__界
粉丝 1
博文 24
码字总数 6923
作品 0
驻马店
私信 提问
设计模式----组合模式

组合模式: 允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。 使用组合结构,我们能把相同的操作应用到组合和个别对象上。换句...

Superheros
2017/11/11
18
0
java中类与类之间的关系讲解

有人学了继承,认为他是面向对象特点之一,就在所有能用到继承的地方使用继承,而不考虑究竟该不该使用,无疑,这是错误的。那么,究竟该如何使用继承呢? java中类与类之间的关系 大部分的初...

菜鸟零号 kungfu~peng
2017/12/20
0
0
组合,关联,聚合的区别

类间关系 在类图中,除了需要描述单独的类的名称、属性和操作外,我们还需要描述类之间的联系,因为没有类是单独存在的,它们通常需要和别的类协作,创造比单独工作更大的语义。在UML类图中,...

长平狐
2012/09/03
139
0
Java编程思想 第7章 复用类

1、继承与组合 复用类的方法有两种:继承与组合。继承就不多说了,组合就是直接在类中new一个对象。 数组也是对象,使用数组也是组合的一种。 2、初始化基类 当创建一个导出类的对象时,该对...

木云凌
2016/02/19
72
0
组合模式(composite)--结构型模式之六

1. 意图 将对象组合成树形结构以表示“部分 -整体”的层次结构。 Composite使得用户对单个对象 和组合对象的使用具有一致性。 2. 动机 在绘图编辑器和图形捕捉系统这样的图形应用程序中,用户...

长平狐
2013/04/25
96
0

没有更多内容

加载失败,请刷新页面

加载更多

高速PCB设计软件allegro中与网络有关的约束规则设置

在allegro pcb的设计过程中,设计约束规则包括时序规则、间距规则、信号完整性规则以及物理规则等,本期主要详细讲解与物理、间距与电气约束中的线宽、线间距物理规则的设置。 一、线宽设置 ...

demyar
21分钟前
2
0
Linux 启动停止SpringBoot jar 程序部署Shell 脚本

#!/bin/bash #这里可替换为你自己的执行程序,其他代码无需更改 APP_NAME=algorithm.jar #使用说明,用来提示输入参数 usage() { echo "Usage: sh 执行脚本.sh [start|stop|restart|status]...

草庐过客
23分钟前
3
0
mysql-connector-java驱动升级到8.0后数据库保存时间出现时差

1.问题:在一个新项目中用到了新版的mysql jdbc 驱动后,发现保存到数据库的时间出现了时差 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId>......

ValSong
25分钟前
3
0
好程序员大数据教程Scala系列之隐式转换和隐式参数

5.1. 概念 隐式转换和隐式参数是Scala中两个非常强大的功能,利用隐式转换和隐式参数,你可以提供优雅的类库,对类库的使用者隐匿掉那些枯燥乏味的细节。 5.2. 作用 隐式的对类的方法进行增强...

好程序员官网
29分钟前
3
0
多线程必备

初次接触线程,可能有很多初学者搞不明白,始终云里雾里,那么本篇文章直接带大家介绍多线程必须知道的几个点 接下来没有多余,直接上干货 1. 进程和线程的区别是什么? 进程是执行着的应用程序,...

理性思考
32分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部