Buenos efectos de sonido de los vehículos
Estructuras y Clases
Programación Orientada a Objetos en Swift
Clases vs. Estructuras: Conceptos y Diferencias en Swift
Diferencias entre Estructuras y Clases en Swift: Copia de Valores vs Referencias
Clases en Swift: Datos por Referencia y Comparación de Objetos
Tipos de Propiedades
Programación Swift: Variables y Estructuras
Aprovecha las Kotlin Lazy Properties en Desempeño de Apps
Propiedades Computadas en Swift: Cálculo Automatizado de Valores
Variables de Sólo Lectura en Swift
Observadores de Properties en Swift: WillSet y DidSet
"Uso de la palabra clave 'static' en Swift"
Métodos, subíndices y herencia
Métodos en Clases y Estructuras: Creación y Uso Práctico
Métodos Mutables en Swift: Cambia Propiedades en Estructuras y Enumerados
Métodos Estáticos y Atributos Compartidos en Videojuegos
Subíndices en Swift: Implementación y Uso Práctico
Matrices: Manipulación y Operaciones Básicas
Herencia de Clases en Swift: Conceptos y Ejemplos Prácticos
Sobreescritura de Métodos y Propiedades en Python
Inicializadores o constructores
Conversión de Grados: Celsius, Fahrenheit y Kelvin
Clases y Constructores en Programación: Sintaxis y Modificación
Constructores designados y de conveniencia en Swift
Manejo de Constructores y Valores Nullable en Swift
Programación Orientada a Objetos: Constructores y Destructores en Java
Encadenamiento opcional
Encadenamiento de Opcionales en Swift
Creación de Clases y Gestión de Opcionales en Swift
Programación Segura con Opcionales en Swift
Encadenamiento de Opcionales en Swift: Cómo Evitar Errores Comunes
Conclusión
Programación en iOS con Swift: Fundamentos y Prácticas
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
La sobreescritura es uno de los conceptos fundamentales en la programación orientada a objetos. Permite que una subclase pueda proporcionar su propia implementación de un método o propiedad que ya existe en una clase padre. En esencia, la sobreescritura le da a la subclase la habilidad de definir un comportamiento específico que reemplaza al de la superclase.
Sobreescribir métodos y propiedades implica redefinirlos en una subclase para que esta utilice su propia versión, sin importar la implementación de su clase superior.
class Vehiculo:
def haz_ruido(self):
pass
class Tren(Vehiculo):
def haz_ruido(self):
print("Chucho Chucho")
tren = Tren()
tren.haz_ruido() # Salida: Chucho Chucho
En este ejemplo, Tren
hereda de Vehiculo
y sobreescribe el método haz_ruido
.
super()
para extender la funcionalidad?El uso de super()
permite invocar métodos de la clase padre, facilitando la extensión de funcionalidades sin sobreescribir completamente la implementación existente.
class Coche(Vehiculo):
def __init__(self, velocidad):
self.velocidad = velocidad
def descripcion(self):
return f'Viajando a {self.velocidad} km/h'
class CocheAutomatico(Coche):
def descripcion(self):
return super().descripcion() + ' en modo automático'
coche = CocheAutomatico(100)
print(coche.descripcion()) # Salida: Viajando a 100 km/h en modo automático
Aquí, CocheAutomatico
extiende el método descripcion
de Coche
.
final
y para qué se utiliza?final
es un modificador que indica que un método o una propiedad no deben ser sobreescritos más abajo en la jerarquía de herencia. Esto garantiza que ninguna subclase pueda alterar una implementación esencial de su clase base.
from typing import final
class Vehiculo:
@final
def tipo_vehiculo(self):
return 'Vehículo'
class Coche(Vehiculo):
# Intentar sobreescribir el método tipo_vehiculo resultará en un error.
pass
En este caso, aplicar @final
asegura que tipo_vehiculo
no pueda ser modificado en Coche
.
La sobreescritura es clave cuando se necesita adaptar o personalizar el comportamiento de un método o propiedad en una subclase. Por ejemplo, una subclase de Vehiculo
puede ser un Coche
, y otro puede ser un Tren
. Cada tipo de vehículo hace ruido de manera distinta, pero comparten el mismo método haz_ruido
.
Implementa el método haz_ruido
en una subclase Bicicleta
. ¿Crees que el ruido del Tándem
será igual al de Bicicleta
o necesitará su propia implementación? Explora la posibilidad de sobreescribir o no según tu juicio.
Recuerda, mientras más practiques con herencia y sobreescritura en tus proyectos, más cómodo te sentirás modelando problemas del mundo real en código. ¡Continúa desarrollando tus habilidades!
Aportes 7
Preguntas 0
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")
}
}
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?