Что такое переопределение методов в ООП

Ответ

Переопределение метода (method overriding) — это один из ключевых механизмов полиморфизма в ООП, который позволяет классу-наследнику предоставить собственную реализацию метода, уже существующего в родительском классе.

Основная цель — изменить или расширить поведение унаследованного метода, адаптировав его под нужды дочернего класса.

Условия для переопределения:

  • Метод должен иметь то же имя и ту же сигнатуру (набор параметров), что и в родительском классе.
  • Класс должен быть наследником того класса, чей метод переопределяется.

Пример на Python:

class Shape:
    def area(self):
        print("Вычисление площади для базовой фигуры")
        return 0

class Square(Shape):
    def __init__(self, side):
        self.side = side

    # Переопределение метода area()
    def area(self):
        print(f"Вычисление площади для квадрата со стороной {self.side}")
        return self.side * self.side

shape = Shape()
print(f"Площадь: {shape.area()}n") # Площадь: 0

square = Square(5)
print(f"Площадь: {square.area()}") # Площадь: 25

Расширение метода с помощью super()

Часто требуется не полностью заменить, а лишь дополнить логику родительского метода. Для этого используется super().

class Animal:
    def make_sound(self):
        print("Издает звук")

class Dog(Animal):
    def make_sound(self):
        super().make_sound() # 1. Вызываем реализацию из родительского класса
        print("Гав!")      # 2. Добавляем свою логику

dog = Dog()
dog.make_sound()
# Вывод:
# Издает звук
# Гав!