HERENCIA Y POLIMORFISMO
HERENCIA
La herencia permite que se puedan definir nuevas clases basadas de unas ya
existentes a fin de reutilizar el código, generando así una jerarquía de clases
dentro de una aplicación. Si una clase deriva de otra, esta hereda sus atributos y
métodos y puede añadir nuevos atributos, métodos o redefinir los heredados.
En Java tenemos que tener claro cómo llamar a la clase principal de la que
heredamos y aquella que hereda de ella, así, clase que se hereda se
denomina superclase. La clase que hereda se llama subclase. Por lo tanto, una
subclase es una versión especializada de una superclase. Hereda todas las
variables y métodos definidos por la superclase y agrega sus propios elementos
únicos.
Superclase: la clase cuyas características se heredan se conoce como
superclase (o una clase base o una clase principal).
Subclase: la clase que hereda la otra clase se conoce como subclase (o
una clase derivada, clase extendida o clase hija). La subclase puede
agregar sus propios campos y métodos, además de los campos y métodos
de la superclase.
Utiliza la palabra clave extends para identificar la clase que extiende su subclase.
Si no declara una superclase, su clase amplía implícitamente la clase Object. El
objeto es la raíz de todas las jerarquías de herencia; Es la única clase en Java que
no se extiende de otra clase.
Esquema de Herencia
POLIMORFISMO
En programación orientada a objetos, polimorfismo es la capacidad que tienen
los objetos de una clase en ofrecer respuesta distinta e independiente en función
de los parámetros (diferentes implementaciones) utilizados durante su invocación.
Dicho de otro modo, el objeto como entidad puede contener valores de diferentes
tipos durante la ejecución del programa.
Por lo general diremos que existen 3 tipos de polimorfismo:
Sobrecarga: El más conocido y se aplica cuando existen funciones con el
mismo nombre en clases que son completamente independientes una de la
otra.
Paramétrico: Existen funciones con el mismo nombre, pero se usan
diferentes parámetros (nombre o tipo). Se selecciona el método
dependiendo del tipo de datos que se envíe.
Inclusión: Es cuando se puede llamar a un método sin tener que conocer
su tipo, así no se toma en cuenta los detalles de las clases especializadas,
utilizando una interfaz común.