(1)定义一个名为Swimmable(可游泳的)的接口,其中包含void swim()方法,定义另一个名为Flyable(可飞的)的接口,其中包含一个名为void fly()的方法。 (2)定义一个名为Animal的抽象类,其中包含一个void eat()的抽象方法。 (3)定义一个名为WildDuck(野鸭)的类实现上述两个接口,并继承Animal类。编写main()方法,在其中创建一个WildDuck实例,调用它的各种方法。 (4)将WildDuck实例分别赋值给一个Swimmable引用,Flyable引用和Animal引用,测试通过这些引用能否调用相应接口或抽象类中定义的方法。
时间: 2024-03-20 22:43:10 浏览: 89
好的,以下是代码实现:
```python
# 定义 Swimmable 接口
class Swimmable:
def swim(self):
pass
# 定义 Flyable 接口
class Flyable:
def fly(self):
pass
# 定义 Animal 抽象类
from abc import ABC, abstractmethod
class Animal(ABC):
@abstractmethod
def eat(self):
pass
# 定义 WildDuck 类,实现 Swimmable 接口、Flyable 接口和继承 Animal 抽象类
class WildDuck(Swimmable, Flyable, Animal):
def eat(self):
print("WildDuck is eating.")
def swim(self):
print("WildDuck is swimming.")
def fly(self):
print("WildDuck is flying.")
# 测试程序
def main():
# 创建 WildDuck 实例
duck = WildDuck()
# 调用各种方法
duck.eat()
duck.swim()
duck.fly()
# 将 WildDuck 实例分别赋值给 Swimmable 引用、Flyable 引用和 Animal 引用
swimmable_duck = duck
flyable_duck = duck
animal_duck = duck
# 测试通过这些引用能否调用相应接口或抽象类中定义的方法
swimmable_duck.swim()
flyable_duck.fly()
animal_duck.eat()
if __name__ == '__main__':
main()
```
解释一下代码:
首先定义了 Swimmable 接口和 Flyable 接口,分别包含 swim() 方法和 fly() 方法。
然后定义了 Animal 抽象类,包含一个抽象方法 eat()。
接着定义了 WildDuck 类,实现了 Swimmable 接口、Flyable 接口和继承了 Animal 抽象类,实现了 eat() 方法、swim() 方法和 fly() 方法。
在主函数中,创建 WildDuck 实例 duck,并调用各种方法。接着将 duck 实例分别赋值给 Swimmable 引用、Flyable 引用和 Animal 引用,测试通过这些引用能否调用相应接口或抽象类中定义的方法。
希望这个程序能够解决你的问题!
阅读全文