Cursus Raku / Objecten, in- en uitvoer en excepties / Klassen en objecten / Overerving / Exercises / Medewerkers en rollen
Oplossing: Medewerkers en rollen
Hier is een mogelijke oplossing voor de taak.
Code
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;🦋 Je kunt de broncode vinden in het bestand dog-and-cat.raku.
Uitvoer
Anna - manager
Bob - internOpmerkingen
ManagerenInternerven het attribuutnameen de methodebadgevanEmployee, dus hoeft geen van beide die code te herhalen.Elk kind overschrijft
role. Omdatbadgeself.roleaanroept, pakt het de overschrijvende versie op die bij het werkelijke object hoort, wat een andere badge voor de manager en de stagiair oplevert.De naam van de methode,
role, is slechts een naam. Maar hij valt samen met het sleutelwoordroledat later geïntroduceerd wordt.