如何利用setFlyBehavior()和setQuackBehavior()动态地设置鸭子的飞行和叫声行为
时间: 2024-03-03 21:50:20 浏览: 113
要动态地设置鸭子的飞行和叫声行为,可以在Duck类的子类中覆盖setFlyBehavior()和setQuackBehavior()方法,以便在运行时动态地改变鸭子的行为。例如,如果你想创建一只会飞的鸭子,你可以创建一个继承自Duck的FlyingDuck类,并覆盖其构造函数,在其中调用setFlyBehavior()方法,将其飞行行为设置为FlyWithWings对象。代码如下:
```
public class FlyingDuck extends Duck {
public FlyingDuck() {
flyBehavior = new FlyWithWings();
quackBehavior = new Quack();
}
public void display() {
System.out.println("I am a flying duck");
}
}
```
这样,在创建FlyingDuck对象时,它的飞行行为就会被设置为FlyWithWings对象,而叫声行为则会被设置为Quack对象。同样地,你可以创建一个不会飞的鸭子,只需要创建一个继承自Duck的NonFlyingDuck类,并覆盖其构造函数,在其中调用setFlyBehavior()方法,将其飞行行为设置为FlyNoWay对象。
阅读全文