)在交通工具面向对象编程代码的基础上,实现多态。设计实例方法runinfo(),实现多态。接口相同,参数不同,效果不同。
时间: 2024-10-23 13:08:57 浏览: 13
在面向对象编程中,实现多态的一种常见方式是在接口(interface)或抽象类(abstract class)中定义通用的行为,并让各个具体的子类去实现这个行为,同时通过传递不同的参数来达到不同的效果。这里以交通工具为例,我们可以创建一个抽象基类`Transport`,然后定义一个方法`run_info()`。
```python
from abc import ABC, abstractmethod
class Transport(ABC): # 抽象类 Transport,包含 run_info() 方法
@abstractmethod
def run_info(self, info_type: str) -> None:
pass
class Car(Transport): # 子类 Car 实现 run_info()
def run_info(self, info_type: str):
if info_type == "speed":
print(f"Car is running at {self.speed} km/h.")
elif info_type == "fuel_consumption":
print(f"Car consumes {self.fuel_consumption} liters per 100km.")
class Bicycle(Transport): # 另一个子类 Bicycle 实现 run_info()
def run_info(self, info_type: str):
if info_type == "gear":
print(f"Bicycle has {self.gear} gears.")
elif info_type == "distance":
print(f"Bicycle can travel {self.distance} kilometers on one ride.")
# 示例:
car = Car()
car.speed = 120 # 假设车速
car.run_info("speed") # 输出: Car is running at 120 km/h.
bicycle = Bicycle()
bicycle.gear = 7 # 假设自行车齿轮数
bicycle.run_info("gear") # 输出: Bicycle has 7 gears.
```
在这个例子中,`Transport`是一个抽象类,`Car`和`Bicycle`都是它的子类。它们都实现了`run_info`方法,但是由于参数`info_type`的不同,每个子类可以根据实际需要提供不同的信息输出。
阅读全文