面向对象编程的多态怎么理解和实现
时间: 2024-06-17 13:04:04 浏览: 17
面向对象编程的多态指的是一个接口可以拥有多个实现方式,即“一个接口,多种方法”。可以通过继承和接口的方式来实现多态。在继承的情况下,子类可以覆盖父类的方法,从而实现多态。在接口的情况下,不同的类可以实现同一个接口的方法,从而实现多态。
例如,假设我们定义了一个形状的接口,它有一个画方法,不同的形状类可以通过实现这个接口来实现自己的画方法,如下所示:
```python
class Shape:
def draw(self):
pass
class Circle(Shape):
def draw(self):
print("draw a circle")
class Square(Shape):
def draw(self):
print("draw a square")
class Triangle(Shape):
def draw(self):
print("draw a triangle")
```
在这个例子中,Circle、Square和Triangle都实现了Shape接口的draw方法,但是它们的实现方式不同。当我们需要画不同的形状时,只需要调用对应的对象的draw方法,即可实现多态。
```python
circle = Circle()
square = Square()
triangle = Triangle()
circle.draw() # 输出:draw a circle
square.draw() # 输出:draw a square
triangle.draw() # 输出:draw a triangle
```
另外,多态还可以用于形参类型和返回值类型的定义,如下所示:
```python
def draw_shape(shape):
shape.draw()
shape = Circle()
draw_shape(shape) # 输出:draw a circle
def get_shape(type):
if type == "circle":
return Circle()
elif type == "square":
return Square()
elif type == "triangle":
return Triangle()
shape = get_shape("square")
shape.draw() # 输出:draw a square
```