Raku kurss / Objekti, ievade/izvade un izņēmumi / Klases un objekti / Mantošana / Exercises / Darbinieki un lomas
Risinājums: Darbinieki un lomas
Šeit ir iespējams risinājums uzdevumam.
Kods
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;🦋 Atrodiet programmu failā dog-and-cat.raku.
Izvade
Anna - manager
Bob - internKomentāri
ManagerunInternmanto noEmployeeatribūtunameun metodibadge, tāpēc nevienam no tiem šis kods nav jāatkārto.Katra bērnklase pārraksta
role. Tā kābadgeizsaucself.role, tā paņem pārrakstīto versiju, kas pieder īstajam objektam, dodot atšķirīgu caurlaidi vadītājam un praktikantam.Metodes nosaukums
roleir tikai nosaukums. Taču tas sakrīt ar atslēgvārdurole, ar ko iepazīsimies vēlāk.