Kurso de Raku / Aldono 🆕 / Tipoj kaj tekstmaŝinoj / Objektoj kaj klasoj / Exercises / Bestoj kiuj parolas
Solvo: Bestoj kiuj parolas
Jen ebla solvo de la tasko.
Kodo
class Animal {
has $.name;
method speak { '...' }
method greet { "{$.name} says {self.speak}" }
}
class Dog is Animal { method speak { 'Woof' } }
class Cat is Animal { method speak { 'Meow' } }
for Dog.new(name => 'Rex'), Cat.new(name => 'Tom') -> $pet {
say $pet.greet;
}🦋 Vi povas trovi la fontkodon en la dosiero animal-inheritance.raku.
Eligo
Rex says Woof
Tom says MeowKomentoj
greetestas difinita unufoje en la baza klaso, sed ĝi vokasself.speak. Ĉarselfestas la efektiva objekto, la voko atingas la propranspeakde la subklaso.Jen polimorfismo: la sama
greetproduktasWoofpor hundo kajMeowpor kato sen ia ajn kondiĉa kodo.