Polimorfismo java
Los tutoriales de Java han sido escritos para el JDK 8. Los ejemplos y las prácticas que se describen en esta página no aprovechan las mejoras introducidas en versiones posteriores y pueden utilizar tecnología que ya no está disponible.Consulte los cambios en el lenguaje Java para obtener un resumen de las características actualizadas del lenguaje en Java SE 9 y las versiones posteriores.Consulte las notas de la versión del JDK para obtener información sobre las nuevas características, las mejoras y las opciones eliminadas o obsoletas de todas las versiones del JDK.
Definiciones: Una clase derivada de otra clase se denomina subclase (también clase derivada, clase extendida o clase hija). La clase de la que deriva la subclase se llama superclase (también clase base o clase padre).
Excepto Object, que no tiene superclase, cada clase tiene una y sólo una superclase directa (herencia única). En ausencia de otra superclase explícita, toda clase es implícitamente una subclase de Object.
Las clases pueden derivar de clases que derivan de clases que derivan de clases, y así sucesivamente, y en última instancia derivan de la clase superior, Object. Se dice que una clase así desciende de todas las clases de la cadena de herencia que se remonta a Object.
Clase interna de Java
Hay dos formas de reutilizar las clases existentes: la composición y la herencia. Con la composición (también conocida como agregación), se define una nueva clase, que se compone de clases existentes. Con la herencia, se deriva una nueva clase basada en una clase existente, con modificaciones o extensiones.
Supongamos que necesitamos una nueva clase llamada Línea, podemos diseñar la clase Línea reutilizando la clase Punto mediante la composición. Decimos que “Una línea está compuesta por dos puntos”, o “Una línea tiene dos puntos”. La composición muestra una relación “tiene-un”.
En POO, a menudo organizamos las clases en jerarquía para evitar la duplicación y reducir la redundancia. Las clases de la jerarquía inferior heredan todas las variables (atributos estáticos) y métodos (comportamientos dinámicos) de las jerarquías superiores. Una clase en la jerarquía inferior se llama subclase (o clase derivada, hija, extendida). Una clase de la jerarquía superior se llama superclase (o clase base, padre). Al extraer todas las variables y métodos comunes en las superclases, y dejar las variables y métodos especializados en las subclases, se puede reducir o eliminar en gran medida la redundancia, ya que estas variables y métodos comunes no necesitan repetirse en todas las subclases. Por ejemplo,
Clase Java
La herencia puede definirse como el proceso por el que una clase adquiere las propiedades (métodos y campos) de otra. Con el uso de la herencia la información se hace manejable en un orden jerárquico.
En el programa dado, cuando se crea un objeto de la clase Mi_Cálculo, se hace una copia del contenido de la superclase en su interior. Por ello, utilizando el objeto de la subclase se puede acceder a los miembros de la superclase.
La variable de referencia de la superclase puede contener el objeto de la subclase, pero utilizando esa variable sólo se puede acceder a los miembros de la superclase, por lo que para acceder a los miembros de ambas clases se recomienda crear siempre una variable de referencia a la subclase.
Si consideras el programa anterior, puedes instanciar la clase como se indica a continuación. Pero utilizando la variable de referencia de la superclase ( cal en este caso) no se puede llamar al método multiplicación(), que pertenece a la subclase Mi_Cálculo.
Nota – Una subclase hereda todos los miembros (campos, métodos y clases anidadas) de su superclase. Los constructores no son miembros, por lo que no son heredados por las subclases, pero el constructor de la superclase puede ser invocado desde la subclase.
Constructor de herencia Java
La herencia es un tema importante en la programación orientada a objetos. Para entender la herencia, es necesario entender lo que es una subclase. Un rectángulo tiene una longitud y una anchura y un cuadrado también tiene una longitud y una anchura. Sabemos que un cuadrado es un rectángulo que tiene la misma longitud y anchura.
Veamos otros ejemplos de subclases. Una clase “Vehículo” puede tener como subclases “Coche” y “Bicicleta”. Una clase “Pájaro” puede tener como subclases “Gorrión”, “Cuervo” y “Loro”. Una subclase también se llama clase hija y una clase de la que se hace una subclase se llama superclase o clase madre. El proceso de creación de una subclase de una clase se llama herencia. Así, en el ejemplo Cuadrado-Rectángulo, Rectángulo es la superclase y Cuadrado es la subclase.
Una subclase debe crearse de forma que siga la relación “es-una” con su superclase. La creación de subclases nos ayuda a entender mejor la relación entre las clases y hace que la estructura de nuestro programa sea más organizada.