Sobrescritura de Métodos y Propiedades en Clases Derivadas
Clase 17 de 27 • Curso de Programación Orientada a Objetos en Swift
Contenido del curso
- 5

Propiedades Almacenadas en Swift: Uso y Ejemplos Prácticos
04:49 - 6

Propiedades Lazy en Programación: Uso y Ventajas
07:17 - 7

Propiedades Computadas en Swift: Uso y Ejemplos Prácticos
10:31 - 8

Variables de solo lectura en programación y su uso en estructuras y clases
05:14 - 9

Implementación de Observers en Propiedades de Clases en Swift
07:18 - 10

Variables estáticas en clases, estructuras y enumerados
09:19
- 11

Métodos en Clases y Estructuras: Creación y Uso Práctico
07:35 - 12

Métodos Mutantes en Estructuras y Enumerados en Swift
09:05 - 13

Métodos Estáticos y Herencia en Programación de Videojuegos
10:50 - 14

Subíndices en Swift: Sintaxis y Aplicaciones Prácticas
09:02 - 15

Manipulación de Matrices y Subíndices en Programación
12:41 - 16

Herencia de Clases en Programación Orientada a Objetos
10:14 - 17

Sobrescritura de Métodos y Propiedades en Clases Derivadas
12:12
- 18

Inicializadores en Sweet: Creación y Uso Efectivo de Constructores
06:51 - 19

Modificación de Constructores y Parámetros Opcionales en Swift
00:10 - 20

Constructores Designados y de Conveniencia en Herencia de Clases
09:38 - 21

Constructores y manejo de inicialización opcional en Swift
08:42 - 22

Destructores en Programación: Liberación de Recursos Automática
07:13
¿Qué es la sobreescritura en programación orientada a objetos?
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.
¿Cómo sobreescribir métodos y propiedades en Python?
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.
¿Cómo se utiliza 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.
¿Qué es la palabra clave 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.
¿Cuándo usar la sobreescritura y la relación con otras clases?
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.
Ejercicio propuesto
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!