先用继承实现以下 Animal ,Bird ,Wolf之间的关系- class Animal
- {
- private void beat()
- {
- System.out.println("心脏跳动.........");
- }
- public void breath()
- {
- beat();
- System.out.println("呼吸.......");
- }
- }
- class Bird extends Animal
- {
- public void fly()
- {
- System.out.println("flying.......");
- }
- }
- class Wolf extends Animal
- {
- public void run()
- {
- System.out.println("running.......");
- }
- }
- public class InheritTest
- {
- public static void main(String[] args)
- {
- Bird b=new Bird();
- b.breath();
- b.fly();
- Wolf w=new Wolf();
- w.breath();
- w.run();
- }
- }
复制代码 先不考虑别的,如果用组合的方式实现代码复用:- class Animal
- {
- private void beat()
- {
- System.out.println("心脏跳动........");
- }
- public void breath()
- {
- beat();
- System.out.println("呼吸........");
- }
- }
- class Bird
- {
- private Animal a;
- public Bird(Animal a)
- {
- this.a=a;
- }
- public void breath()
- {
- a.breath();
- }
- public void fly()
- {
- System.out.println("flying.......");
- }
- }
- class Wolf
- {
- private Animal a;
- public Wolf(Animal a)
- {
- this.a=a;
- }
- public void breath()
- {
- a.breath();
- }
- public void run()
- {
- System.out.println("running.......");
- }
- }
- public class CompositeTest
- {
- public static void main(String[] args)
- {
- Animal a1=new Animal();
- Bird b=new Bird(a1);
- b.breath();
- b.fly();
- Animal a2=new Animal();
- Wolf w=new Wolf(a2);
- w.breath();
- w.run();
- }
- }
复制代码 代码比较简单,但能表达组合就是将原来父类Animal嵌入进子类中,从而成为了子类中的一部分,就是"has a"关系,在内存空间上,组合比继承多一个在栈内存中的引用那个父类对象的引用变量,当然这里还是用继承好一些,那个关于聚合的例子谁给一个,最好能简单说明问题滴,视频里只是说了一下聚合和组合的紧密程度不同,那聚合的实现方式也应该和组合一样吧,谁给一个详细实现方式的例子
|