Статический полиморфизм (перегрузка методов) и Динамический полиморфизм (переопределение методов):
Статический полиморфизм (перегрузка методов):
Статический полиморфизм в Python осуществляется через механизм перегрузки методов, когда одинаковое имя метода используется в классе с разными параметрами. Однако, в Python нет "настоящей" перегрузки методов, как, например, в языке C++. Вместо этого, последний метод с определенным именем и параметрами переопределяет предыдущие.
Пример статического полиморфизма:
class MathOperations:
def add(self, x, y):
return x + y
def add(self, x, y, z):
return x + y + z
# Создаем объект класса
math_ops = MathOperations()
# Вызываем перегруженные методы
result1 = math_ops.add(2, 3)
result2 = math_ops.add(2, 3, 4)
print(result1) # Вывод: 7
print(result2) # Вывод: 9
В этом примере, метод add
перегружен с разным количеством параметров, и последний метод считается действительным.
Динамический полиморфизм (переопределение методов):
Динамический полиморфизм в Python происходит, когда подкласс предоставляет реализацию метода, который уже был определен в его базовом классе. Это позволяет объектам разных классов использовать одинаковые методы с одинаковыми именами, что обеспечивает единообразие в интерфейсе.
Пример динамического полиморфизма:
class Animal:
def speak(self):
return "Generic animal sound"
class Dog(Animal):
def speak(self):
return "Woof!"
class Cat(Animal):
def speak(self):
return "Meow!"
# Создаем объекты разных классов
my_animal = Animal()
my_dog = Dog()
my_cat = Cat()
# Вызываем метод speak у разных объектов
print(my_animal.speak()) # Вывод: Generic animal sound
print(my_dog.speak()) # Вывод: Woof!
print(my_cat.speak()) # Вывод: Meow!
В этом примере, метод speak
в базовом классе Animal
переопределен в подклассах Dog
и Cat
, что демонстрирует динамический полиморфизм.
Last updated
Was this helpful?