Herencia Simple de Clases en Java

La herencia es un mecanismo que habilita a una clase a tomar como propios todos los comportamientos y atributas de su clase padre(Métodos y variables)

La herencia en java es simple (Como decia en una de sus ventajas: "fácil de aprender") porque sólo se puede tener una "super-clase" de la cual heredar. Al mismo tiempo nuestra clase puede ser la super-clase de una o varias clases hijas

Vemos en nuestro ejemplo que A es superclase de todas las demás, B es clase-hija de A pero super-clase de E y F, además de que nuestro diagrama se parece a un muñequito de palo

En java la cima de todas las clases es la Super-Clase "Object"

Heredando

Podemos hacer de nuestra clase hija de otra con la palabra clase "extends"

  1. public class Ventana extends JFrame{
  2. }

Con este paso (habiendo importado la clase previamente) ya hemos heredados métodos y variables de la superclase JFrame esto nos permite reutilizar la clase partiendo desde cero modificando a nuestro gusto generando claridad.

Búsqueda de métodos (overriden) al heredar de una clase todos sus métodos es posible sobreescribirlos, redefinirlos pero para el caso de que no lo hagamos java buscará en la clase-padre. Si nuestra clase-padre también obviará redefinirlo buscará en su inmediato superior hasta llegar a la cima.

Esta búsqueda de métodos es ascendente de nuestra clase hasta encontrar la definición de nuestro método

Ejemplificando

Creo una super-clase con 2 atributos y 2 métodos, dentro de un package diferenciado

  1. package herencia;
  2.  
  3. public class SuperClase {
  4.     public int numero = 2;
  5.     public String cadena = "hola";
  6.    
  7.     public void sumar(){
  8.         System.out.println(numero + numero);
  9.     }
  10.     public void mostrar(){
  11.         System.out.println(cadena);
  12.     }
  13. }

Por otro lado creo una sub-clase que hereda de mi superclase sus 2 metodos y atributos, previo importación del paquete, y hace uso de los métodos sumar() y mostrar() y los define otros 2 a partir de las variables heredadas.

  1. package herencia.dar10;
  2. import herencia.SuperClase;
  3.  
  4. public class Subclase extends SuperClase{
  5.     public void multiplicar(){
  6.         System.out.println(numero*5);
  7.     }
  8.     public void modificar(){
  9.         System.out.println(cadena + "y chau!");
  10.     }
  11.     public static void main(String[] args) {
  12.         Subclase sb = new Subclase();
  13.         sb.sumar();
  14.         sb.mostrar();
  15.        
  16.         sb.multiplicar();
  17.         sb.modificar();
  18.     }
  19. }

El resultado será:

  • 4
  • hola
  • 10
  • hola y chau!

No hay comentarios:

Publicar un comentario