Курс 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 тест за змістом цієї теми.
Навігація курсом
← Успадкування | Тест — Успадкування →
💪 Або перейдіть одразу до вправ цього розділу.