﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-yangyansong</title><link>http://www.blogjava.net/yangyansong/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 07 May 2026 09:29:24 GMT</lastBuildDate><pubDate>Thu, 07 May 2026 09:29:24 GMT</pubDate><ttl>60</ttl><item><title>类之间的关系</title><link>http://www.blogjava.net/yangyansong/archive/2007/10/26/156161.html</link><dc:creator>yangyansong</dc:creator><author>yangyansong</author><pubDate>Fri, 26 Oct 2007 07:24:00 GMT</pubDate><guid>http://www.blogjava.net/yangyansong/archive/2007/10/26/156161.html</guid><wfw:comment>http://www.blogjava.net/yangyansong/comments/156161.html</wfw:comment><comments>http://www.blogjava.net/yangyansong/archive/2007/10/26/156161.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yangyansong/comments/commentRss/156161.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yangyansong/services/trackbacks/156161.html</trackback:ping><description><![CDATA[<p><font size="4">关于UML规定的类之间的关系网上查到的说法不一，但都说是5种：</font>  <p><font size="4">版本一：</font>  <p><font size="4">泛化、关联、聚合、合成、依赖</font>  <p><font size="4">版本二：</font>  <p><font size="4">关联、依赖、聚集、泛化、实现</font>  <p><font size="4"></font>&nbsp;  <p><font size="4">那我们就都拿来说一下吧！每个人心中都有一种属于自己的类关系分类。</font>  <p><font size="4">1、泛化关系：类之间或接口之间的继承关系。（一种说法说它包含了实现关系）</font>  <p><font size="4">代码：</font>  <p><font size="4">public class CA</font></p> <p><font size="4">{</font></p> <p><font size="4">......</font></p> <p><font size="4">}</font></p> <p><font size="4">public class CAS extends CA</font></p> <p><font size="4">{</font></p> <p><font size="4">......</font></p> <p><font size="4">}</font></p> <p><font size="4">2、实现关系：实体类实现接口叫做实现关系。</font>  <p><font size="4">代码：</font></p><font size="4">public interface A<br>{<br>public void methodA();<br>}<br>public class B implements A<br>{<br>public void methodA()<br>{...}<br>...<br>}</font>  <p><font size="4">3、关联关系：类之间的联接。比较宽泛的一种关系，分为聚集和合成（有的版本将这两种关系合并成了聚合）。</font>  <p><font size="4">按照类之间的数量对比，关联关系分为：</font>  <p><font size="4">一对一关联</font>  <p><font size="4">一对多关联</font>  <p><font size="4">多对多关联</font>  <p><font size="4">按照方向，关联关系分为：</font>  <p><font size="4">单向关联</font>  <p><font size="4">双向关联</font>  <p><font size="4">4、聚集关系：是关联关系的一种，是强的关联关系。聚合是整体与个体之间的关系。</font><font size="4">聚合关系是通过实例变量来实现的。</font>  <p><font size="4">5、合成（组合）关系：是关联关系的一种，是比聚集关系强的关联关系。它要求普通的聚合关系中代表的对象负责代表部分的对象的生命周期，合成关系是不能共享的。</font>  <p><font size="4"></font>&nbsp;  <p><font size="4">对比4和5举例子</font>  <p><font size="4">聚集关系中，子系统允许被拆卸和替换。例如：电灯和灯泡</font>  <p><font size="4">Bulb bulb1 = new Bulb(); //创建第一个灯泡</font>  <p><font size="4"><font size="4">Bulb bulb2 = new Bulb(); //创建第二个灯泡</font></font>  <p><font size="4">ReadingLamp lamp = new ReadingLamp(bulb1); //创建的时候使用第一个灯泡</font>  <p><font size="4">lamp.setBulb(bulb2); //创建以后还可以换成第二个灯泡</font>  <p><font size="4"></font>&nbsp;  <p><font size="4">合成关系中，子系统不允许被拆卸和替换。例如：Windows的窗口和窗口上的菜单就是组合关系。生命周期一致指的是部分必须在组合创建的同时或者之后创建，在组合销毁之前或者同时销毁，部分的生命周期不会超出组合的生命周期。</font>  <p><font size="4">【聚集和合成在代码实现上的主要差别在于生命周期的实现上，合成需要负责其部分的创建和销毁；聚集则不然，部分可以在整体之前创建也可以在整体销毁之后再销毁或者一直不销毁】</font>  <p><font size="4"></font>&nbsp;  <p><font size="4">6、依赖关系：是类与类之间的连接，依赖总是单向的。依赖关系代表一个类依赖于另一个类的定义。</font><font size="4">一般而言，依赖关系在Java语言中体现为局部变量，以及一个方法的参数。</font>  <p><font size="4"></font>&nbsp;  <p><font size="4">【区分几种关系】</font>  <p><font size="4">依赖、关联、聚集、合成看起来都很象，一个类里面出现了其他类的影子。</font>  <p><font size="4">关联、聚集、合成都可以说是一种依赖，只是它们有比较强的语义和其他作用。在实际使用的时候类之间的关系确定了关联、聚集、合成以后，剩下的就可以叫做依赖了。</font>  <p><font size="4">聚集、合成又是一种关联。关联关系中两个类是平级的，当出现整体和个体的迹象时就变成了聚集，个体的生命周期需要被整体严格控制时又变成了合成。</font></p><img src ="http://www.blogjava.net/yangyansong/aggbug/156161.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yangyansong/" target="_blank">yangyansong</a> 2007-10-26 15:24 <a href="http://www.blogjava.net/yangyansong/archive/2007/10/26/156161.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>