К какому принципу ООП относится переопределение методов?

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

Ответ

Переопределение методов (method overriding) является ключевым механизмом реализации полиморфизма (а точнее, полиморфизма во время выполнения — runtime polymorphism).

Как это работает:

  1. Наследование создаёт иерархию классов.
  2. Переопределение позволяет подклассу предоставить свою специфическую реализацию метода, уже определённого в суперклассе.
  3. Полиморфизм позволяет ссылке суперкласса указывать на объект подкласса и вызывать переопределённую версию метода.

Пример на Java:

class Shape {
    void draw() {
        System.out.println("Drawing a shape");
    }
}

class Circle extends Shape {
    @Override // Аннотация для явного указания переопределения
    void draw() {
        System.out.println("Drawing a circle");
    }
}

class Square extends Shape {
    @Override
    void draw() {
        System.out.println("Drawing a square");
    }
}

public class Main {
    public static void main(String[] args) {
        Shape myShape = new Circle(); // Полиморфная ссылка
        myShape.draw(); // Вывод: "Drawing a circle"

        myShape = new Square();
        myShape.draw(); // Вывод: "Drawing a square"
    }
}

Почему это важно: Полиморфизм через переопределение позволяет писать гибкий и расширяемый код, где поведение определяется типом объекта, а не типом ссылки.