Назад к вопросам
Junior
73
questionbank

Что такое полиморфизм в программировании?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Полиморфизм (от греч. "много форм") — это способность различных объектов реагировать на одно и то же сообщение (вызов метода) по-разному, в зависимости от своего типа.

В объектно-ориентированном программировании полиморфизм позволяет:

  • Работать с объектами разных классов через общий интерфейс или базовый класс.
  • Создавать более гибкий и расширяемый код.

Основные виды полиморфизма:

  • Compile-time (статический) полиморфизм: Реализуется через перегрузку методов (method overloading). Методы с одним и тем же именем, но разными сигнатурами (количество или типы параметров) определяются в одном классе.
  • Run-time (динамический) полиморфизм: Реализуется через переопределение методов (method overriding). Метод в дочернем классе имеет ту же сигнатуру, что и метод в родительском классе. Какой именно метод будет вызван, определяется во время выполнения программы в зависимости от фактического типа объекта.

Пример на Python (динамический полиморфизм):

class Animal:
    def sound(self):
        pass # Базовый метод, который будет переопределен

class Dog(Animal):
    def sound(self):
        # Переопределение метода sound для класса Dog
        print("Woof")

class Cat(Animal):
    def sound(self):
        # Переопределение метода sound для класса Cat
        print("Meow")

# Функция, работающая с объектами через базовый класс Animal
def make_animal_sound(animal):
    animal.sound()

# Использование полиморфизма
dog = Dog()
cat = Cat()

make_animal_sound(dog) # Вызовет Dog.sound() -> Woof
make_animal_sound(cat) # Вызовет Cat.sound() -> Meow