Curso de Raku / Objetos, entrada/salida y excepciones / Clases y objetos / Herencia / Exercises / Un atributo heredado
Solución: Un atributo heredado
Aquí tienes una posible solución para la tarea.
Código
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;🦋 Puedes encontrar el código fuente en el archivo inherited-attribute.raku.
Salida
2
4Comentarios
BikeyCarheredan ambas deVehicleel atributowheels(y su accesor). Ninguna vuelve a declarar el atributo desde cero: solo le dan al heredado un valor por defecto,2y4respectivamente.Como el valor por defecto está incorporado en cada clase, puedes crear los objetos con un simple
Bike.newyCar.new, y el accesor heredado lee el número correcto de ruedas.Puedes pasar el valor explícitamente, por ejemplo
Car.new(wheels => 3), y un argumento explícito anula el valor por defecto. Pero como una bicicleta o un coche vienen muy probablemente ya con su número habitual de ruedas, los valores por defecto mantienen sencillo el caso común y dejan sitio a la excepción ocasional.
Navegación del curso
← Un atributo heredado | Roles →