No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Sobreescritura de variables y métodos

17/27
Recursos

Aportes 7

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Buenos efectos de sonido de los vehículos

Esta clase te hace reflexionar que antes de ponerte a codear busques maquetear como podrías hacerlo.
Quizá eso mejore tu productividad y calidad de código.

Interesante esto en otros lenguajes se llama sobrecarga de funciones.

Se le puede aplicar el final a la propia clase para que esta no tenga propiedad de herencia ?

import UIKit

class Vehiculo{
var currentSpeed=0.0
var description:String{
return “Viajanda a (currentSpeed) km/h”
}
func makeNoise(){
print( “El ruido depende del vehiculo”)
}
}

let someVehicle=Vehiculo()
print(someVehicle.description)

// herencia
class Bicyclew:Vehiculo{
var hasBasket=false
override func makeNoise() {
print(“El ruido de este vehiculo es Glin Glin”)
}
}
//herencia de hijo-- y este hereda de su padre
class Tandem:Bicyclew{
var currrentNumberOfPassangers=0
}

let tandem=Tandem()
tandem.hasBasket=true
tandem.currentSpeed=22.0
tandem.currrentNumberOfPassangers=2

print(" (tandem.description) y su cantidad de pasajeros es (tandem.currrentNumberOfPassangers)")

// override metodos padre

class Train:Vehiculo{
var numberOfWagones=0
override func makeNoise() {
print(“Chooooo Chooooooo”)
}
}

let train=Train()
train.makeNoise()

tandem.makeNoise()

Algo curioso es que con la palabra final evitamos que una clase hija sobreescriba variables, metodos etc.
Pero si intentamos asignarle un valor a esa variable final desde la instancia y no desde la definicion de la nueva clase, si se puede sobreescribir.
Ejemplo:

class Vehicle {
    var color: String = ""
    var currentSpeed: Double = 0.0
    final var brand: String = "Renault"
}
var myVehicle = Vehicle()
myVehicle.brand = "Honda" // no da error y asigna correctamente el nuevo valor.
class Tank : gasCar {
    var guns = 2
    override func makeNoise() {
           print("clan Clan")
        }
}

class gasBike : motorCycle {
    var tankCapacity = 5
    override func makeNoise() {
           print("brrr brrrr")
        }
}

class cruise : boat{
    var capacity = 500
    override func makeNoise() {
           print("buuuuu buuuu")
        }
}