详解类与类的关联关系
仔细想了类与类之间的关系,感觉很多资料书说得有很多地方都是不正确的,很多也没有说清楚。希望本篇文章能给读者一些帮助,也自勉。本篇文章引用了别人的东西,并非全部原创。
一:一般化关系(也称泛化关系) UML的关系图: 代码描述: public interface Animal { public void breath(); }
public class Dog implements Animal{ public void breath() { System.out.println("现在发出的是狗呼吸的声音"); } }
二:关联关系: UML关系图: 代码描述: public class Driver { private Car car; public void start(){ car.run(); } } public class Car { public void run(){ System.out.println("车子启动的方法"); } }
eg:司机类关联着车子类,而不能说车子类是司机类的一部分吧?! 三:聚合关系: UML关系图: 什么是聚合关系呢? 就是has-a的关系,engine类和tire类都是属于car类的一部分。是整体与部分的关系!!但是注意:比如说这个engine可以是car类的一部分,也可以是冰箱类的一部分。engine可以被冰箱类引用。
代码实现: public class Car { private Engine engine; public void run(){ engine.begin(); } }
public class Engine { public void begin(){ System.out.println("启动engine"); } }
四:合成关系: UML关系图: 代码实现: public class Monkey {
private Limb limb;
public Monkey(){
limb = new Limb();
}
public void useLimb(){
limb.run();
}
}
public class Limb { public void run(){ System.out.println("行走的方法"); } }
什么是合成关系,到底聚合关系和合成关系的区别是什么? 我查阅了很多的资料,都说的不很清楚,实际上,合成关系也是聚合关系,但是注意:比如说limb只能属于美猴王的,不能被其它的类引用。它的生命周期随另一个类的生命周期的开始而开始,结束而结束。 五:依赖关系: 代码实现: public class perosn { public void buy(House house){ house.live(); } }
public class House { public void live(){ System.out.println("买了,你就能住了"); } }
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- oracle 常用知识点整理
- oracle11g报错 ORA-01078和LRM-00109 解决方法
- ajax响应json字符串和json数组
- ruby-on-rails – Ruby错误代码中的MailChimp API问题:-90
- iphone – iOS – 我可以在运行时更改localizable.strings内
- CCMenuItemSprite ---CCMenuItemImage::create无法显示全部
- ruby-on-rails – rails:与belongs_to关系的大规模分配安全
- swift – 有没有办法在switch语句中将变量绑定到多个备选方
- NSJSONSerialization解析JSON数据
- AJAX调用SERVLET例子