继承的拓展(利用组合来实现复用)

本文介绍了一个使用Java实现的组合模式案例,通过Animal类被Wolf和Bird类组合引用的方式,展示了如何复用Animal类中的方法,并在不同的上下文中实现特定的行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

假设有3个类:Animal、Wolf、Bird

新建一个Animal类            全部在包中

package org;
class Animal{

private void beat(){
System.out.println("心脏跳动...");
}
public void breath(){
beat();
System.out.println("吸一口气,吐一口气,呼吸中...");
}

}

建一个Wolf类

package org;
import org.Animal;//导入包中的Animal类
class Wolf{
//将原来的父类组合到原来的子类,作为子类的一个组合作用
private Animal a;
public Wolf(Animal a){
this.a = a;
}
//重新定义一个自己的breath()方法
public void breath(){
//直接复用Animal类提供的breath()方法来实现Bird类的breath()方法
a.breath();
}
public void fly(){
System.out.println("在地上奔跑...");
}
}

再去建一个Bird类

package org;
import org.Animal;//导入包中的Animal类
class Bird{
//将原来的父类组合到原来的子类,作为子类的一个组合作用
private Animal a;
public Bird(Animal a){
this.a = a;
}
//重新定义一个自己的breath()方法
public void breath(){
//直接复用Animal类提供的breath()方法来实现Bird类的breath()方法
a.breath();
}
public void fly(){
System.out.println("在天空飞翔...");
}

}

在ComFun里调用

package org;
import org.*;//导入包中的所有类
public class ComFun{

public static void main(String[] args){
//实例化Animal
Animal a1=new Animal();

//实例化Bird  
Bird b=new Bird(a1);
b.fly();
b.breath();

//实例化Wolf
Wolf w=new Wolf(a1);
w.fly();
w.breath();
}

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值