Raku-Kurs / Objekte, Ein- und Ausgabe und Ausnahmen / Klassen und Objekte / Vererbung / Exercises / Ein geerbtes Attribut
Lösung: Ein geerbtes Attribut
Hier ist eine mögliche Lösung der Aufgabe.
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;🦋 Du findest den Quellcode in der Datei inherited-attribute.raku.
Ausgabe
2
4Kommentare
BikeundCarerben beide das Attributwheels(und seinen Accessor) vonVehicle. Keines deklariert das Attribut von Grund auf neu — sie geben dem geerbten lediglich einen Standardwert,2beziehungsweise4.Weil der Standardwert in jeder Klasse fest eingebaut ist, können Sie die Objekte mit einem schlichten
Bike.newundCar.newerzeugen, und der geerbte Accessor liest die richtige Anzahl Räder zurück.Sie können den Wert weiterhin ausdrücklich übergeben, etwa
Car.new(wheels => 3), und ein ausdrückliches Argument überschreibt den Standardwert. Da ein Fahrrad oder ein Auto aber höchstwahrscheinlich schon mit seiner üblichen Anzahl Räder kommt, halten die Standardwerte den Normalfall einfach und lassen zugleich Raum für die gelegentliche Ausnahme.
Kursnavigation
← Ein geerbtes Attribut | Rollen →