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

«Что такое переопределение метода в ООП?» — вопрос из категории Основы программирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Цель: Изменить или расширить поведение, унаследованное от родительского класса.

Пример на Java:

class Animal {
    // Метод в родительском классе
    public void makeSound() {
        System.out.println("Some generic animal sound");
    }
}

class Dog extends Animal {
    // Переопределённый метод в дочернем классе
    @Override
    public void makeSound() {
        System.out.println("Bark!"); // Специфичное для Dog поведение
    }
}

// Использование
public class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog();
        myDog.makeSound(); // Выведет: "Bark!" (вызывается переопределённый метод)
    }
}

Ключевые правила:

  1. Сигнатура метода должна точно совпадать.
  2. Уровень доступа не может быть более строгим (например, нельзя переопределить public метод как private).
  3. Аннотация @Override (в Java) помогает компилятору проверить корректность переопределения и улучшает читаемость кода.
  4. При вызове метода для объекта дочернего класса выполняется его переопределённая версия (полиморфизм).