Herencia: ¿por qué y cómo?
El término herencia es más antiguo que la programación de computadoras, y describe la práctica común de pasar diferentes bienes de una persona a otra después de la muerte de esa persona. El término, cuando se relaciona con la programación de computadoras, tiene un significado completamente diferente.
Definamos el término para nuestros propósitos:
La herencia es una práctica común (en la programación de objetos) de pasar atributos y métodos de la superclase (definida y existente) a una clase recién creada, llamada subclase.
En otras palabras, la herencia es una forma de construir una nueva clase, no desde cero, sino utilizando un repertorio de rasgos ya definido. La nueva clase hereda (y esta es la clave) todo el equipamiento ya existente, pero puedes agregar algo nuevo si es necesario.
Gracias a eso, es posible construir clases más especializadas (más concretas) utilizando algunos conjuntos de reglas y comportamientos generales predefinidos.
El factor más importante del proceso es la relación entre la superclase y todas sus subclases (nota: si B es una subclase de A y C es una subclase de B, esto también significa que C es una subclase de A, ya que la relación es totalmente transitiva).
Aquí se presenta un ejemplo muy simple de herencia de dos niveles:
class Vehiculo:
pass
class VehiculoTerrestre(Vehiculo):
pass
class VehiculoOruga(VehiculoTerrestre):
pass
Todas las clases presentadas están vacías por ahora, ya que te mostraremos cómo funcionan las relaciones mutuas entre las superclases y las subclases. Las llenaremos con contenido pronto.
Podemos decir que:
- La clase
Vehiculo
es la superclase para clasesVehiculoTerrestre
yVehiculoOruga
. - La clase
VehiculoTerrestre
es una subclase deVehiculo
y la superclase deVehiculoOruga
al mismo tiempo. - La clase
VehiculoOruga
es una subclase tanto deVehiculo
yVehiculoTerrestre
.
El conocimiento anterior proviene de la lectura del código (en otras palabras, lo sabemos porque podemos verlo).
¿Python sabe lo mismo? ¿Es posible preguntarle a Python al respecto? Sí lo es.