Курс языка программирования 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), и явный аргумент переопределяет значение по умолчанию. Но поскольку у велосипеда или автомобиля скорее всего уже есть привычное число колёс, значения по умолчанию упрощают обычный случай, оставляя место для редких исключений.
Навигация по курсу
← Унаследованный атрибут | Роли →