Переопределение методов
Как потомок может изменить поведение унаследованного метода
Что такое переопределение?
Переопределение метода — это возможность потомка дать свою реализацию метода, который уже существует в родительском классе.
Простыми словами: родитель говорит «все животные издают звук», но потомок решает, какой именно звук он будет издавать.
Пример: животные и их голоса
Создадим класс Animal с методом speak(), который просто выводит многоточие. А затем создадим потомков, которые переопределят этот метод:
Обратите внимание: метод speak() объявлен в классе Animal, но каждый потомок дал свою реализацию. При вызове у объекта вызывается его собственная версия метода.
Если метод не переопределён
Если потомок не переопределяет метод, используется версия из родительского класса:
Вызов родительского метода из потомка
В переопределённом методе потомка можно вызвать оригинальный метод родителя с помощью parent.метод():
Важное ограничение
В Idyllium нет неявного приведения дочернего типа к родительскому. Это означает, что следующий код не сработает:
Каждый объект имеет строго свой тип. Переопределение методов нужно для того, чтобы разные классы могли иметь методы с одинаковыми именами, но разной реализацией — при этом вызываются они всегда через объект конкретного класса.
Итог
- Переопределение методов — это когда потомок даёт свою реализацию метода родителя.
- Если метод не переопределён — используется версия из родительского класса.
- В Idyllium нет неявного приведения дочернего типа к родительскому — каждый объект строго сохраняет свой тип.