用php实现使用抽象类、接口完成一个饲养员给动物喂食物。步骤一:定义Animal接口,包含方法eat(); 步骤二:定义类Dog和Cat让其实现接口Animal; 步骤三:定义抽象类Food,包含属性name及setName()、getName()方法; 步骤四:定义实现类Fish及Bone实现Food类; 步骤五:定义饲养员类Feeder类,包含方法feed(),实现饲养员给动物喂食物。
时间: 2024-03-11 11:49:04 浏览: 108
以下是用 PHP 实现的代码:
```php
<?php
// 步骤一:定义 Animal 接口,包含方法 eat()
interface Animal {
public function eat();
}
// 步骤二:定义 Dog 和 Cat 类,让其实现 Animal 接口
class Dog implements Animal {
// 实现 eat() 方法
public function eat() {
echo "狗正在吃骨头". PHP_EOL;
}
}
class Cat implements Animal {
// 实现 eat() 方法
public function eat() {
echo "猫正在吃鱼". PHP_EOL;
}
}
// 步骤三:定义抽象类 Food,包含属性 name 及 setName()、getName() 方法
abstract class Food {
protected $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
// 定义抽象方法 feed(),用于喂食动物
abstract public function feed(Animal $animal);
}
// 步骤四:定义实现类 Fish 及 Bone 实现 Food 类
class Fish extends Food {
// 实现 feed() 方法
public function feed(Animal $animal) {
echo "饲养员正在给" . get_class($animal) . "喂" . $this->name . PHP_EOL;
$animal->eat();
}
}
class Bone extends Food {
// 实现 feed() 方法
public function feed(Animal $animal) {
echo "饲养员正在给" . get_class($animal) . "喂" . $this->name . PHP_EOL;
$animal->eat();
}
}
// 步骤五:定义饲养员类 Feeder,包含方法 feed(),实现饲养员给动物喂食物
class Feeder {
public function feed(Food $food, Animal $animal) {
$food->feed($animal);
}
}
// 实例化饲养员类 Feeder
$feeder = new Feeder();
// 实例化不同的动物类和食物类
$dog = new Dog();
$cat = new Cat();
$fish = new Fish();
$bone = new Bone();
// 饲养员给狗喂骨头
$feeder->feed($bone, $dog);
// 饲养员给猫喂鱼
$feeder->feed($fish, $cat);
?>
```
以上代码定义了一个 `Animal` 接口,包含方法 `eat()`,以及两个实现了 `Animal` 接口的类 `Dog` 和 `Cat`。还定义了一个抽象类 `Food`,包含属性 `name` 及 `setName()`、`getName()` 方法和抽象方法 `feed()`,用于喂食动物。并定义了两个实现了 `Food` 类的类 `Fish` 和 `Bone`,分别用于喂鱼和骨头。最后定义了一个 `Feeder` 类,包含方法 `feed()`,用于饲养员给动物喂食物。在实例化不同的动物和食物类后,通过调用 `Feeder` 类中的 `feed()` 方法,让饲养员给不同的动物喂不同的食物。
阅读全文