Курс по Raku / Обекти, вход-изход и изключения / Класове и обекти / Наследяване / Exercises / Наследен атрибут
Решение: Наследен атрибут
Ето едно възможно решение на задачата.
Код
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;🦋 Намерете програмата във файла inherited-attribute.raku.
Изход
2
4Коментари
И
Bike, иCarнаследяват атрибутаwheels(и неговия аксесор) отVehicle. Нито един от тях не предекларира атрибута от нулата — те само дават на наследения стойност по подразбиране, съответно2и4.Понеже стойността по подразбиране е вградена във всеки клас, можете да създадете обектите с обикновени
Bike.newиCar.new, а наследеният аксесор връща правилния брой колела.Пак можете да подадете стойността изрично, например
Car.new(wheels => 3), и изричният аргумент надделява над стойността по подразбиране. Но понеже колелото или автомобилът най-вероятно вече идват с обичайния си брой колела, стойностите по подразбиране държат обичайния случай прост, оставяйки място за случайното изключение.
Навигация в курса
← Наследен атрибут | Роли →