利用组合实现复用:
- 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("我在天空自在的飞翔。");
- }
- }
- class Wolf
- {
- private Animal a;
- public Wolf(Animal a)
- {
- this.a = a;
- }
- public void breath()
- {
- a.breath();
- }
- public void run()
- {
- System.out.println("我在地上自由奔跑");
- }
- }
- 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();
- w.breath();
- w.run();
- }
- }
在创建Bird和Wolf实例前,先创建Animal实例,使Animal实例成为Bird和Wolf实例的一部分。此时的Wolf对象和Bird对象由Animal对象组合而成(比继承安全性好)
转载于:https://blog.51cto.com/chengxuyuan/1007522