Полиморфизм через наследование достигается созданием иерархии классов, где:
Пример:
class Animal:
def make_sound(self):
print("Generic animal sound")
class Dog(Animal):
def make_sound(self):
print("Woof!")
class Cat(Animal):
def make_sound(self):
print("Meow!")
animals = [Dog(), Cat(), Animal()]
for animal in animals:
animal.make_sound()
Полиморфизм через наследование — это механизм, позволяющий объектам разных классов, имеющих общего предка, обрабатываться единообразно через методы, определенные в базовом классе.
Чтобы создать классы, поддерживающие полиморфизм через наследование, нужно:
Пример на Python:
class Животное:
def __init__(self, имя):
self.имя = имя
def издать_звук(self):
print("Животное издает звук") # Базовая реализация. Подклассы переопределят ее
class Собака(Животное):
def издать_звук(self):
print("Гав-гав!") # Переопределяем метод для класса Собака
class Кошка(Животное):
def издать_звук(self):
print("Мяу!") # Переопределяем метод для класса Кошка
# Пример использования полиморфизма
животные = [Собака("Бобик"), Кошка("Муся"), Животное("Неизвестное")]
for животное in животные:
животное.издать_звук() # Вызывается соответствующий метод для каждого объекта
Пояснения к примеру:
Животное
— это базовый класс с методом издать_звук()
.Собака
и Кошка
— это подклассы, которые наследуют от Животное
.издать_звук()
, предоставляя свою специфическую реализацию.for
мы итерируемся по списку объектов разных типов (Собака
, Кошка
, Животное
), но для каждого объекта вызывается метод издать_звук()
, который соответствует типу этого объекта. Это и есть полиморфизм.Этот пример демонстрирует, как полиморфизм позволяет обрабатывать объекты разных классов единообразно, используя общий интерфейс (метод издать_звук()
), но при этом каждый класс может иметь свою собственную реализацию этого метода.