利用组合实现复用

利用组合实现复用:

 

  
  
  
  
  1. class Animal  
  2. {  
  3.     private void beat()  
  4.     {  
  5.         System.out.println("心脏跳动。。。");  
  6.     }  
  7.     public void breath()  
  8.     {  
  9.         beat();  
  10.         System.out.println("吸一口气,吐一口气,呼吸中。。");  
  11.     }  
  12.  
  13. }  
  14. class Bird  
  15. {  
  16. //将原来的父类嵌入原来的子类,作为子类的一个组合成分
  17.     private Animal a;  
  18.     public Bird(Animal a)  
  19.     {  
  20.         this.a = a;  
  21.     }  
  22.     public void breath()  
  23.     {  
  24.         a.breath();  
  25.     }  
  26.     public void fly()  
  27.     {  
  28.         System.out.println("我在天空自在的飞翔。");  
  29.     }  
  30. }  
  31. class Wolf  
  32. {  
  33.     private Animal a;  
  34.     public Wolf(Animal a)  
  35.     {  
  36.         this.a = a;  
  37.     }  
  38.     public void breath()  
  39.     {  
  40.         a.breath();  
  41.     }  
  42.     public void run()  
  43.     {  
  44.         System.out.println("我在地上自由奔跑");  
  45.     }  
  46. }  
  47. public class CompositeTest  
  48. {  
  49.     public static void main(String[] args)  
  50.     {  
  51.         Animal a1 = new Animal();  
  52.         Bird b  = new Bird(a1);  
  53.         b.breath();  
  54.         b.fly();  
  55.         Animal a2 = new Animal();  
  56.         Wolf w = new Wolf();  
  57.         w.breath();  
  58.         w.run();  
  59.     }  

在创建Bird和Wolf实例前,先创建Animal实例,使Animal实例成为Bird和Wolf实例的一部分。此时的Wolf对象和Bird对象由Animal对象组合而成(比继承安全性好)

本文出自 “java程序猿的博客” 博客,转载请与作者联系!

你可能感兴趣的:(java)