🐶

多态 (Polymorphism)

2023/06/11に公開

在编程中,多态 (Polymorphism)是面向对象编程中的一个重要概念。它指的是同一种操作或方法可以在不同的对象类型上具有不同的行为。

Polymorphism is a Greek word that means "many-shaped" and it has two distinct aspects:
At run time, objects of a derived class may be treated as objects of a base class in places such as method parameters and collections or arrays.
https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/object-oriented/polymorphism

多态允许我们使用统一的接口来处理不同类型的对象,而不需要针对每种类型编写特定的代码。这使得程序更加灵活和可扩展,并提高了代码的可维护性。

在实现多态的过程中,通常使用了两个关键概念:继承(inheritance)和方法重写(method overriding)。

继承允许一个类派生自另一个类,继承类(子类)可以继承基类(父类)的属性和方法。子类可以覆盖(重写)继承自父类的方法,以提供自己的实现。当我们通过父类类型的引用来调用一个方法时,实际执行的是子类中重写的方法。

下面是一个简单的示例,展示了多态的概念:

class Animal:
    def sound(self):
        print("Animal makes a sound")

class Dog(Animal):
    def sound(self):
        print("Dog barks")

class Cat(Animal):
    def sound(self):
        print("Cat meows")

# 多态示例
animals = [Dog(), Cat()]

for animal in animals:
    animal.sound()

在上述示例中,Animal 是一个基类,DogCat 是继承自 Animal 的子类。它们都重写了 sound() 方法。通过创建一个包含 DogCat 对象的列表,然后迭代列表并调用 sound() 方法,我们可以看到不同类型的对象调用相同的方法时表现出不同的行为。

多态的优点是可以通过抽象和封装提高代码的可读性、可维护性和可扩展性。它也是面向对象编程的核心概念之一。

Discussion