Cursus Raku / Objecten, in- en uitvoer en excepties / Klassen en objecten / Overerving / Exercises / Een geërfd attribuut
Oplossing: Een geërfd attribuut
Hier is een mogelijke oplossing voor de taak.
Code
class Vehicle {
has $.wheels;
}
class Bike is Vehicle {
has $.wheels = 2;
}
class Car is Vehicle {
has $.wheels = 4;
}
say Bike.new.wheels;
say Car.new.wheels;🦋 Je kunt de broncode vinden in het bestand inherited-attribute.raku.
Uitvoer
2
4Opmerkingen
BikeenCarerven allebei het attribuutwheels(en zijn accessor) vanVehicle. Geen van beide declareert het attribuut opnieuw vanaf nul — ze geven het geërfde attribuut alleen een standaardwaarde, respectievelijk2en4.Omdat de standaardwaarde in elke klasse is ingebakken, kun je de objecten met een simpele
Bike.newenCar.newmaken, en leest de geërfde accessor het juiste aantal wielen terug.Je kunt de waarde nog steeds expliciet meegeven, bijvoorbeeld
Car.new(wheels => 3), en een expliciet argument overschrijft de standaardwaarde. Maar omdat een fiets of een auto hoogstwaarschijnlijk al met zijn gebruikelijke aantal wielen komt, houden de standaardwaarden het gewone geval eenvoudig en laten ze toch ruimte voor de enkele uitzondering.
Cursusnavigatie
← Een geërfd attribuut | Rollen →