Курс языка программирования Raku / Объекты, ввод-вывод и исключения / Классы и объекты / Наследование
Переопределение методов
Дочерний класс может предоставить собственную версию унаследованного метода. Это называется переопределением. Когда метод вызывается у объекта дочернего класса, выполняется версия потомка, а не родителя.
class Animal {
has $.name;
method speak {
'some sound';
}
method intro {
"$.name says " ~ self.speak;
}
}
class Dog is Animal {
method speak {
'Woof';
}
}
class Cat is Animal {
method speak {
'Meow';
}
}Dog и Cat каждый переопределяют
speak. Метод intro, унаследованный от
Animal без изменений, вызывает self.speak — и
этот вызов использует тот speak, который принадлежит самому
объекту:
say Dog.new(name => 'Rex').intro; # Rex says Woof
say Cat.new(name => 'Tom').intro; # Tom says MeowИтак, один и тот же унаследованный intro даёт разные
результаты, потому что каждый объект приносит собственный
speak. Это одна из центральных идей
объектно-ориентированного программирования: общий код, который
подстраивается под конкретный вид объекта, с которым работает.
Практика
Пройдите 1 тест по содержанию этой темы.
Навигация по курсу
← Наследование | Тест — Наследование →
💪 Или перейдите сразу к упражнениям этого
раздела.