Anular y Extender la Funcionalidad Heredada
Uno de los principales beneficios de la herencia en Python es la capacidad de anular y extender la funcionalidad heredada. Esto significa que puedes modificar o agregar al comportamiento de la clase padre en la clase hija, lo que te permite adaptar la funcionalidad a tus necesidades específicas.
Anular Métodos Heredados
Para anular un método heredado, simplemente defines un método en la clase hija con el mismo nombre que el método en la clase padre. Cuando llamas al método en una instancia de la clase hija, se utilizará la implementación de la clase hija en lugar de la implementación de la clase padre.
## Base class
class Animal:
def speak(self):
print("The animal makes a sound.")
## Derived class
class Dog(Animal):
def speak(self):
print("The dog barks.")
## Create an instance of the derived class
my_dog = Dog()
my_dog.speak() ## Output: The dog barks.
En este ejemplo, la clase Dog
anula el método speak()
de la clase Animal
, proporcionando una implementación más específica para un perro.
Extender la Funcionalidad Heredada
Además de anular los métodos heredados, también puedes extender la funcionalidad de la clase padre agregando nuevos métodos o atributos a la clase hija.
## Base class
class Vehicle:
def __init__(self, make, model):
self.make = make
self.model = model
def start(self):
print("The vehicle is starting.")
## Derived class
class ElectricCar(Vehicle):
def __init__(self, make, model, battery_capacity):
super().__init__(make, model)
self.battery_capacity = battery_capacity
def start(self):
print("The electric car is starting.")
def charge(self):
print("The electric car is charging.")
## Create an instance of the derived class
my_electric_car = ElectricCar("Tesla", "Model S", 100)
my_electric_car.start() ## Output: The electric car is starting.
my_electric_car.charge() ## Output: The electric car is charging.
En este ejemplo, la clase ElectricCar
extiende la clase Vehicle
agregando un atributo battery_capacity
y un método charge()
, mientras que también anula el método start()
.
Al entender cómo anular y extender la funcionalidad heredada, puedes crear clases Python más flexibles y potentes que cumplan con tus requisitos específicos.