Курс по Raku / Обекти, вход-изход и изключения / Класове и обекти / Наследяване / Exercises / Служители и роли
Решение: Служители и роли
Ето едно възможно решение на задачата.
Код
class Employee {
has $.name;
method role {
'staff';
}
method badge {
"$.name - " ~ self.role;
}
}
class Manager is Employee {
method role { 'manager' }
}
class Intern is Employee {
method role { 'intern' }
}
say Manager.new(name => 'Anna').badge;
say Intern.new(name => 'Bob').badge;🦋 Намерете програмата във файла dog-and-cat.raku.
Изход
Anna - manager
Bob - internКоментари
ManagerиInternнаследяват атрибутаnameи методаbadgeотEmployee, така че никой от тях не се налага да повтаря този код.Всеки дъщерен клас предефинира
role. Понежеbadgeизвикваself.role, той подхваща предефинираната версия, принадлежаща на действителния обект, и дава различен бадж за мениджъра и за стажанта.Името на метода,
role, е просто име. Но то съвпада с ключовата думаrole, която ще бъде въведена по-нататък.