26 c#类的组合
组合即将各个部分组合在一起。程序设计中就是用已有类的对象来产生新的类。
桌子由木板和钉子组合而成,台灯使用灯座,灯管,电线,接头等拼起来的。我们发现自己周围的很多东西都是由更小的其它东西拼凑构成的,就像积木一样。相信你小的时候也曾拆开过许多你觉得好奇的东西,去一看究竟。去看看这个新的类(class)到底是由那些其他的类构成的。其实在你很小的时候你已经理解了组合。
程序设计中,组合体现在生成的新类里用到了现有类的实例。组合使生成新类更加简便和直观,实现也非常容易,相比继承这种通过已有类构造新类的方法,大多数人(包括在现实生活中)更喜欢组合。
我做了一个实际的例子,帮助大家理解组合的威力。我们已经有了两个类。一个是具有吹冷风功能的Cooler类,一个是具有吹暖风功能的Heater类。现在我们想利用这两个类现成的功能,组合形成一个新类AirConditionerCoolAndHeat,一个具有制冷和制热功能的冷暖空调。怎么做呢?在这个新类中加入两个字段成员。一个是Cooler类型的对象,一个是Heater类型的对象。在制冷功能中就调用Coolder的方法。在制热功能中就调用Heater的方法。怎么样很cool吧。
你创建一个项目。解决方案名称为Sloution26,项目名称为Exercise26,项目类型为控制台程序。新添加三个类文件。分别为Cooler,Heater和AirConditionerCoolAndHeat。
点击Cooler.cs,修改代码如下:
点击Heater.cs,修改代码如下:
点击AirConditionerCoolAndHeat.cs,修改代码如下:
点击Program.cs,修改代码如下:
运行结果
1. 读懂这段代码,为重要语句加上注释,解释它的功能。
2. 仿照Cooler和Heater新建一个具有除湿功能的除湿机类。修改AirConditionerCoolAndHeat,使它具有除湿功能。
3. 使用继承让Cooler具有加热的功能。
4. 使用继承让cooler具有加热和除湿功能。
付费解答C#入门学习过程中碰到的各种问题。
零基础学习C#入门,大多数的问题都可以通过自学或借助互联网解决。
但是还是会有一些问题,不是那么容易解决,成为了你学习的绊脚石。最后甚至造成你学习的半途而废。通常学习C#编程入门,你会遇到20到30多个你不能很容易解决的问题。
这个时候,你最需要什么呢?
对!一个专业的老师给你帮助!
你在学习本课程中,遇到任何问题都可以通过qq或email想本教程作者进行求助。
只需30元,你就可以得到本教程作者的三次专业解答。所以你只需不到300元就可以顺利的完成C#入门,从此推开软件行业的大门。
付费方式非常简单:
用微信扫描下面的二维码。在付款留言中留下你的qq号或email地址就可以啦。
教育不是要便宜,而是要可靠!真正聪明的人,更懂得花钱让专业的人为自己服务,提高自己的效率。
老师qq:2040227296
老师email:2040227296@qq.com
26 c#类的组合的更多相关文章
- Java类的组合
1 package 类的组合; 2 3 public class Clock { 4 private int hour,minute,second;//字段: 保存分秒数据 5 public void ...
- C++:类的组合
在类中定义的数据成员一般都是基本数据类型或服复合数据类型.但是还可以根据需要使用 其他类的对象作为正在声明的数据成员.复杂的对象还可以有比较简单的对象一某种方式组合 而成,复杂对象和组成它的简单对象之 ...
- c++基础语法 构造函数 析构函数 类的组合
1 构造函数 1.不能指定任何返回值,甚至连void都不能有. 2.与Java不同,c++不同new对象,对于无参的构造函数声明对象时括号应该省略. 2 析构函数 1. 前加~,不能有参数,不能有返回 ...
- c++,类的组合
1. 在A类中以B类的对象作为成员变量,称为类的组合(composition). 可以先看看这篇文章理解组合的用处: C++中组合的使用 http://blog.csdn.net/jia_xiaoxi ...
- 【C++基础】类的组合
所谓类的组合是指:类中的成员数据是还有一个类的对象或者是还有一个类的指针或引用.通过类的组合能够在已有的抽象的基础上实现更复杂的抽象. 比如: 1.按值组合 #include<iostream. ...
- C++类的组合例子
Line类调用Point类的两个对象p1,p2作为其数据成员,计算线段长度 组合类构造函数定义的一般形式为: 类名::类名(形参表):内嵌对象1(形参表),内嵌对象2(形参表)... {类的初始化} ...
- python - class类 (三) 类的组合
类的组合: #组合 class A1(): def pr(self): return 'a1' class A2(): def pr(self): return 'a2' class A3(): de ...
- python类的组合
类的组合,即在类实例化时,将另一个类的实例作为参数传入,这样可以将两个实例关联起来. 当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好. 例如,描述一个机器人类,这个大类是由很多 ...
- day25类的组合多态封装
类的组合多态与封装类的组合 1. 什么是组合 组合指的是某一个对象拥有一个属性,该属性的值是另外一个类的对象 2. 为何要用组合 通过为某一个对象添加属性(属性的值是另外一个类的对象)的方式,可以 ...
随机推荐
- Apache 使用localhost(127.0.0.1)可以访问,使用本机IP(局域网)不能访问
本机ip是:192.168.1.25,输入后提示: Forbidden You don't have permission to access / on this server 对于此问题的解决办法, ...
- Ubuntu 16.04安装磁盘占用分析器:ncdu
使用此工具能分析出哪个文件或者文件夹有多大,从而实现自己手动删除. 安装: sudo apt-get install ncdu 使用: #默认搜索当前用户目录 ncdu #搜索整个硬盘 ncdu /
- MongoDB小结24 - 索引简介2
索引的名字 集合中每个索引都有一个字符串类型的名字,来唯一标识索引. 服务器通过名字来操作或者删除索引. 要注意的是,索引名有字符个数限制,所以索引创建时一定要用自定义的名字,如 db.user.en ...
- fetch各种报跨域错误,数据无法获取的解决方案
1.介绍 fetch 提供了一个获取资源的接口 (包括跨域). fetch 的核心主要包括:Request , Response , Header , Body 利用了请求的异步特性 --- 它是基于 ...
- STL算法设计理念 - 函数对象和函数对象当參数和返回值
函数对象: 重载函数调用操作符的类.其对象常称为函数对象(function object),即它们是行为类似函数的对象. 一个类对象,表现出一个函数的特征,就是通过"对象名+(參数列表)&q ...
- angularJS 系列(七)
In AngularJS 1.3+, there is One-time binding built-in: The main purpose of one-time binding expressi ...
- Apple Swift编程语言新手教程
文件夹 1 简单介绍 2 Swift入门 3 简单值 4 控制流 5 函数与闭包 6 对象与类 7 枚举与结构 1 简单介绍 今天凌晨Apple刚刚公布了Swift编程 ...
- 加入收藏BUG改善
<script type="text/javascript"> function add_favorite(a, title, url) { url = url || ...
- restlet 2.3.5 org.restlet包导入eclipse出现的com.sun.net.httpserver类包找不到问题
准备过一遍restlet 2.3.5 JavaEE的源码. 环境 eclipse3.7.2 和 jdk 7.0 将org.restlet 包增加到eclipse中.出现 com.sun.net.htt ...
- 【图像处理】基于OpenCV底层实现的图片旋转
image processing 系列 [图像处理]直方图匹配 [图像处理]高斯滤波.中值滤波.均值滤波 图片旋转,本质上是对旋转后的图片中每一个像素点计算在原图的位置.然后照搬过来就好. (多说一句 ...