当前课程知识点:Java程序设计 >  第三章 类的重用 >  3.6-类的组合 >  3.6-类的组合

返回《Java程序设计》慕课在线视频课程列表

3.6-类的组合在线视频

3.6-类的组合

下一节:3.7-小结

返回《Java程序设计》慕课在线视频列表

3.6-类的组合课程教案、知识点、字幕

大家好

欢迎回来继续学习

JAVA语言程序设计

这一节我们来学习类的组合

我们写面向对象的程序

就是要用软件来模拟

现实世界中的对象

那么现实世界中的对象呢

往往是由部件组装而成的

那我们就希望

我们程序中的对象

是不是也可以由部件组装而成呢

在JAVA中

我们是可以实现

这种部件组装的思想的

我们在设计一个新的类的时候

可以选用已有类的对象

作为它的成员

那么这就构成了一个

组合的机制

也就是JAVA里边的类的组合

类的组合它也是一种

类的重用机制

这种重用机制

表达的是包含关系

有一个这样的关系

现在我们来看一下这个组合的语法

其实组合呢

就是将已经存在的

类的对象放到新类里面就行了

举个例子比如说

我们可以说厨房kitchen

里面有个炉子cooker

和一个冰箱refrigerator

所以我们可以简单的就把对象

my cooker和my refrigerator

放在类Kitchen里边

那我们看这个类Kitchen的声明

里面就包含了一个Cooker对象成员

一个Refrigerator对象成员

那这就是一个简单的类组合了

部件组装的思想

接下来我们通过一个

更完整的例题来体验一下

类的组合

现在我们用线段类作为例子

来演示一下类的组合

由于一条线段包含两个端点

所以我们先声明好个点类

准备好

接下来声明这个线段类

它有两个端点嘛

所以我们看到有两个属性

实际上是组合

它包含一个端点P1 一个端点P2

在线段类的构造方法中呢

就调用了点类的构造方法

分别构造了两个端点

参数a的x坐标 y坐标取出来

构造一个端点

参数b的x坐标 y坐标取出来

构造另一个端点

然后还在这个线段类中

另外增加了一个

自己声明的方法Length

计算线段的长度

这就是一个典型的类组合

好 我们了解了类的组合以后呢

大家会觉得组合也是一种

类重用的机制

那前面讲的继承呢

也是一种类重用的机制

它们之间有什么异同呢

其实它们是用来表达不同的

类与类之间的关系的

继承表达的是

是一个 是一种这种从属关系

隶属关系

而组合表达的是一种包含关系

有一个这样的关系

很多时候在声明一个

比较复杂的类的时候呢

可能继承组合都用得上

那接下来我们通过一个例题

来看一下我们综合使用

继承和组合两种机制

现在我们再来看一个

既有组合又有继承的例子

一个餐桌布置的例子

布置餐桌嘛

就要有餐盘有各种餐具

还要有你餐桌设置的

一种固定的模式

对吧

首先我们在这儿声明一个盘子类

然后接下来呢

再声明一个餐盘类

DinnerPlate它扩展了盘子

餐盘也是盘子嘛

那就是说明餐盘为盘子的子类

这是一种类的继承

所以我们看一下子类中

它的DinnerPlate构造方法的第一句

是调用它超类的构造方法

然后因为有各种餐具

所以我们先声明一个

各种餐具的超类Utensil类

然后勺子继承这个器具类

它的构造方法

先调用超类的构造方法

叉子也是继承了器具类

也是在构造方法里头

先调用超类的构造方法

餐刀类也是一样的

餐桌布置呢我们认为

它首先是一种做事的习惯

所以我们先声明一个

Custom类作为超类

然后让PlaceSetting餐桌布置类

去扩展或者继承Custom类

那这就有一种继承关系了

除了继承关系以外

布置餐桌你显然要有

各种餐具餐盘放在上面

所以这还有一个组合关系在里面

那么在餐桌布置里面呢

它的组件有勺子 叉子

餐刀还有餐盘

在PlaceSetting构造方法中呢

第一件事儿

当然是调用它超类的构造方法

然后还要调用它组件对象

所属类的构造方法

去构造一个个的组件对象

把这些餐具还有餐盘构造出来

好 那最后才是这个

PlaceSetting类构造方法中的

其他语句

那比如说我们就用一个

println输出信息

来模拟一些其他的语句

表示这是PlaceSetting

构造方法的方法体的

其他语句在执行

接下来测试一下

构造一个PlaceSetting对象

看看构造方法的调用次序是什么

从运行结果我们会看到

PlaceSetting的超类构造方法

首先被调用

然后就是去构造它那些组建了

对象成员

在构造勺子之前

先调用Spoon超类构造方法

Utensil

同样的次序构造叉子

构造餐刀

都是先调用它们超类构造方法

然后才是叉子餐刀构造方法

还有构造餐盘对象

也是先调用它得超类Plate

盘子的构造方法

然后构造餐盘

最后我们看到是执行PlateSetting

这个类它构造方法

方法体中的其他语句

就是最后一个输出信息的语句

通过这个例子我们就看到了

既有组合又有继承的情况下

构造方法的调用次序是什么

好 在这一章呢

我们学习了类的组合

而且我们跟类的继承进行了比较

了解了两种不同的类重用机制

分别是描述类与类之间

不同关系的

通过例题我们知道

可以综合来使用组合和继承

构成一个比较复杂的类

这一节的内容就是这些

Java程序设计课程列表:

第一章 Java语言基础知识

-1.0-导学

--1.0-导学

--JDK的安装与配置01

--JDK的安装与配置02

--JDK的安装与配置03

--编辑并执行第一个java程序01

--编辑并执行第一个java程序02

--编辑并执行第一个java程序03

--eclipse的安装和配置01

--eclipse的安装和配置02

--eclipse的安装和配置03

--使用eclipse进行Java的开发01

--使用eclipse进行Java的开发02

--使用eclipse进行Java的开发03

-1.1-Java与面向对象程序设计简介

--1.1.1 Java与面向对象程序设计简介

--第一章 Java语言基础知识--1.1-Java与面向对象程序设计简介

-1.2-基本数据类型与表达式

--1.2.1-基本数据类型与表达式

-第一章 Java语言基础知识--1.2-基本数据类型与表达式

-1.3-数组

--1.3.1-数组

-第一章 Java语言基础知识--1.3-数组

-1.4-算法的流程控制

--1.4.1-算法的流程控制

--第一章 Java语言基础知识--1.4-算法的流程控制

-1.5-第一章小结

--1.5.1-第一章小结

-第一章编程练习题

-课件

--外部链接

第一章续-习题讲解视频

-Java环境配置、Eclipse使用、Helloworld程序详解

--JAVA的安装和配置

--编写并执行第一个Java程序及Java的跨平台性

--eclipse的安装和配置

--使用eclipse建立Java项目、编写和运行Java程序

--Java注释和Eclipse中的注释操作

--详解HelloWorld程序

-Java数据类型

--Java数据类型介绍

--Java整数类型

--Java浮点类型

--Java字符类型和布尔类型

--数据类型实战

--数据类型转换

--Java强制类型转换精度损失示例与表达式中的数据类型转换

-Java数组

--Java数组介绍、声明与使用

--一维数组的初始化与length属性

--数组索引的原理与使用

--二维数组的介绍与使用

-Java变量

--Java的变量

-命令行参数

--命令行参数的介绍

第二章 类与对象

-2.0-导学

--2.0-导学

-2.1-面向对象方法的特性

--2.1-面向对象方法的特性

--第二章 类与对象--2.1-面向对象方法的特性

-2.2-1-类声明与对象创建

--2.2-1-类声明与对象创建

--第二章 类与对象--2.2-1-类声明与对象创建

-2.2-2-数据成员

--2.2-2-数据成员

--第二章 类与对象--2.2-2-数据成员

-2.2-3-方法成员

--2.2-3-方法成员

--第二章 类与对象--2.2-3-方法成员

-2.2-4-包

--2.2-4-包

--第二章 类与对象--2.2-4-包

-2.2-5-类的访问权限控制

--2.2-5-类的访问权限控制

--第二章 类与对象--2.2-5-类的访问权限控制

-2.3-1-对象初始化

--2.3-1-对象初始化

--第二章 类与对象--2.3-1-对象初始化

-2.3-2-内存回收

--2.3-2-内存回收

--第二章 类与对象--2.3-2-内存回收

-2.4-枚举类

--2.4-枚举类

--第二章 类与对象--2.4-枚举类

-2.5-应用举例

--2.5-应用举例

-2.6-第2章小结

--2.6-第2章小结

-第二章编程练习题

-课件

--第二章课件

第三章 类的重用

-3.0-导学

--3.0-导学

-3.1.1-3.1.2-类继承的概念和语法

--3.1.1-3.1.2-类继承的概念和语法

--第三章 类的重用--3.1.1-3.1.2-类继承的概念和语法

-3.1.3-隐藏和覆盖

--3.1.3-隐藏和覆盖

--第三章 类的重用--3.1.3-隐藏和覆盖

-3.2-Object 类

--3.2-Object 类

--第三章 类的重用--3.2-Object 类

-3.3-终结类与终结方法

--3.3-终结类与终结方法

--第三章 类的重用--3.3-终结类与终结方法

-3.4-抽象类

--3.4-抽象类

--第三章 类的重用--3.4-抽象类

-3.5-泛型

--3.5-泛型

--第三章 类的重用--3.5-泛型

-3.6-类的组合

--3.6-类的组合

-3.7-小结

--3.7-小结

-第三章编程练习题

-课件

--课件

第四章 接口与多态

-4.0-导学

--导学

-4.1-接口

--接口

--第四章 接口与多态--4.1-接口

-4.2.1-4.2.2-类型转换

--类型转换

--第四章 接口与多态--4.2.1-4.2.2-类型转换

-4.2.3-方法的查找

--方法的查找

--第四章 接口与多态--4.2.3-方法的查找

-4.3-多态的概念

--多态的概念

--第四章 接口与多态--4.3-多态的概念

-4.4-多态的应用举例

--多态的应用举例

--第四章 接口与多态--4.4-多态的应用举例

-4.5-构造方法与多态性

--构造方法和多态性

--第四章 接口与多态--4.5-构造方法与多态性

-4.6-本章小结

--本章小结

-第四章编程作业

-课件

--课件

第五章 输入输出

-5.0-导学

--5.0-导学

-5.1.1-5.1.2-异常处理的概念

--5.1.1-5.1.2-异常处理的概念

--第五章 输入输出--5.1.1-5.1.2-异常处理的概念

-5.1.3-5.1.5-异常的处理

--5.1.3-5.1.5-异常的处理

--第五章 输入输出--5.1.3-5.1.5-异常的处理

-5.2-输入输出流的概念

--输入输出流的概念

--第五章 输入输出--5.2-输入输出流的概念

-5.3.1-写文本文件

--写文本文件

--第五章 输入输出--5.3.1-写文本文件

-5.3.2-读文本文件

--读文本文件

--第五章 输入输出--5.3.2-读文本文件

-5.3.3-写二进制文件

--写二进制文件

--第五章 输入输出--5.3.3-写二进制文件

-5.3.4-读二进制文件

--读二进制文件

-5.3.5-File类

--File类

-5.3.6-处理压缩文件

--处理压缩文件

-5.3.7-对象序列化

--对象序列化

-5.3.8-随机文件读写

--随机文件读写

-5.4-本章小结

--本章小结

-课件

--课件

第六章 对象群体的组织

-6.0-导学

--导学

-6.1-Java集合框架介绍

--Java集合框架介绍

--第六章 对象群体的组织--6.1-Java集合框架介绍

-6.2-主要接口及常用的实现类

--6.2-主要接口及常用的实现类

--第六章 对象群体的组织--6.2-主要接口及常用的实现类

-6.3-常用算法

--常用算法

-6.4-数组实用方法

--6.4-数组实用方法

-6.5-基于动态数组的类型(Vector, ArrayList)

--基于动态数组的类型(Vector, ArrayList)

-6.6-遍历Collection

--遍历Collection

-6.7-Map接口及其实现

--Map接口及其实现

-6.8-第6章小结

--第6章小结

-课件

--课件

第七章 图形用户界面

-7.0-导学

--导学

-7.1-绘图

--绘图

-7.2-Swing基础

--Swing基础

-7.3-Swing的层次

--Swing的层次

-7.4-布局管理

--布局管理

-7.5-内部类

--内部类

-7.6-事件处理的基本概念

--事件处理的基本概念

-7.7-事件派发机制

--事件派发机制

-7.8-顶层容器

--7.8-顶层容器

-7.9-中间层容器(一)

--7.9-中间层容器(一)

-7.10-中间层容器(二)

--7.10-中间层容器(二)

-7.11-原子组件(一)

--7.11-原子组件(一)

-7.12-原子组件(二)

--7.12-原子组件(二)

-7.13-原子组件(三)

--7.13-原子组件(三)

-7.14-其它Swing特性

--7.14-其它Swing特性

-7.15-第7章小结

--7.15-第7章小结

-课件

--课件

3.6-类的组合笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。