Domina la herencia en Swift con un ejemplo claro y práctico: crea una superclase con propiedades y métodos comunes, y extiéndela con subclases que añaden comportamientos específicos. Así reutilizas código, evitas duplicidades y construyes jerarquías que escalan sin esfuerzo.
¿Qué es la herencia y por qué acelera tu desarrollo?
La herencia permite que una clase hija adquiera automáticamente las propiedades y métodos de su clase madre. Si necesitas una clase “igual pero con algo más”, la subclase hereda lo común y añade lo propio. En el ejemplo, Vehicle sirve como base para especializar en Bicycle y Tandem.
Superclase: define lo común a todos los tipos.
Subclase: hereda y agrega nuevas características.
Propiedad autocomputada: calcula su valor al accederse.
Beneficio clave: menos código repetido y más claridad.
¿Cómo se implementa la herencia con clases en Swift?
Partimos de un Playground nuevo y definimos una jerarquía simple. Observa cómo cada subclase amplía a la anterior sin reescribir lo ya hecho.
¿Cómo se define la superclase vehicle?
classVehicle{var currentSpeed:Double=0.0var description:String{return"viajando a \(currentSpeed) kilómetros por hora"}funcmakeNoise(){// do nothing: cada vehículo hará su propio ruido.}}let someVehicle =Vehicle()print(someVehicle.description)// "viajando a 0.0 kilómetros por hora"
Modela lo común: velocidad y description como propiedad autocomputada.
Prepara un método para especializar: makeNoise() sin implementación aquí.
¿Cómo hereda bicycle y añade propiedades?
classBicycle:Vehicle{var hasBasket:Bool=false}let bicycle =Bicycle()bicycle.hasBasket =truebicycle.currentSpeed =15print(bicycle.description)// "viajando a 15.0 kilómetros por hora"
Bicycle es “un vehículo con algo extra”: hasBasket.
Hereda currentSpeed, description y makeNoise() de Vehicle.
¿Cómo especializa tandem sobre bicycle?
classTandem:Bicycle{var currentNumberOfPassengers:Int=0}let tandem =Tandem()tandem.hasBasket =truetandem.currentNumberOfPassengers =2tandem.currentSpeed =22print(tandem.description)// "viajando a 22.0 kilómetros por hora"
Tandem hereda de Bicycle y agrega currentNumberOfPassengers.
Modifica propiedades heredadas y mantiene el acceso a description.
¿Qué jerarquías conviene practicar y qué habilidades desarrollas?
A partir de Vehicle, crea árboles de clases para un videojuego con distintos tipos de vehículos. Úsalos como ejercicio de diseño: define qué comparte el padre y qué añade cada hijo.
Desde Vehicle: coche, moto, barco, bicicleta.
Desde coche: Fórmula uno, coche de calle, tanqueta, furgoneta.
Desde moto: moto eléctrica, moto de gasolina, patineta.
Desde barco: transatlántico, yate, barquita de pesca.
Propiedades y métodos a considerar en los hijos.
Cilindrada y tipo de motor.
Tipo de combustible o capacidad eléctrica.
Acciones específicas: ruidos distintos en makeNoise().
Habilidades que refuerzas al practicar.
Modelar una jerarquía con clase madre e hijos.
Detectar atributos comunes vs. específicos.
Instanciar objetos y modificar propiedades heredadas.
Prepararte para sobrescribir variables y métodos más adelante.
¿Qué vehículos añadirías y qué propiedades los hacen únicos? Comparte ideas y casos de uso en comentarios.