Herencia en Java

Herencia es permitir la creación de nuevas clases basadas en clases existentes. La clase ya existente es llamada superclass, clase base o clase padre. Mientras que la nueva clase es llamada subclase, clase derivada o clase hija.

A continuación un breve ejemplo de Herencia…

  • Mostraremos por consola los datos de un profesor y un alumno usando herencia ya que ambos tienen atributos en común. 

Atributos Profesor:

nombre, rut, edad y asignatura.

Atributos Alumnos:

nombre, rut, edad, numero de matricula, colegio.

Como podemos observar existen atributos en común los cuales corresponden en este caso a una Persona por lo tanto podríamos crear una clase base Persona y 2 subclases llamadas Profesor y Alumnos.

  • Nuestra clase base quedaría de la siguiente manera.
   package qualityinfosolutions;
     public class Persona {

       String nombre;
       String rut;
       int edad;
       //Creamos constructor de la clase base
       public Persona(String nombre, String rut, int edad) {
         this.nombre = nombre;
         this.rut = rut;
         this.edad = edad;
       }
       //Agregamos un método para mostrar los datos (solo para uso de este ejemplo)
       public void mostrarDatos(){

        System.out.println("Nombre: " + this.nombre);
        System.out.println("Rut: " + this.rut);
        System.out.println("Edad: " + this.edad);

      } 
    }
  • Como ya mencionamos anteriormente utilizaremos esta clase para crear la clase Alumno y Profesor, y la manera de utilizar la herencia en java es agregando la palabra extends en la declaración de la clase seguida por el nombre de la clase base.
public class Alumno extends Persona {....}
public class Alumno extends Persona {....}

De esta manera tanto la clase Alumno como Profesor pueden utilizar todos los métodos y atributos de la clase Persona.

  • El siguiente paso es crear nuestras clases Alumno y Profesor quedando de la siguiente manera.
    package qualityinfosolutions;

     public class Alumno extends Persona {

       String colegio;
       int numero_matricula;

     public Alumno(String colegio, int numero_matricula, String nombre, String rut, int edad) {
       super(nombre, rut, edad);//utilizamos el constructor de la clase base
       this.colegio = colegio;
       this.numero_matricula = numero_matricula;
     }

     @Override //Reemplaza el método con el mismo nombre de la clase base
     public void mostrarDatos(){
       super.mostrarDatos(); //llamamos al metodo mostrarDatos de la case base
       System.out.println("Colegio: "+ this.colegio);
       System.out.println("Numero de Matricula: "+ this.numero_matricula);
     }
   }
   package qualityinfosolutions;

     public class Profesor extends Persona{

       String asignatura;

       public Profesor(String asignatura_profesor, String nombre, String rut, int edad) {
         super(nombre, rut, edad);//utilizamos el constructor de la clase base
         this.asignatura = asignatura_profesor;
      }

     @Override //Reemplaza el método con el mismo nombre de la clase base
     public void mostrarDatos(){
       super.mostrarDatos();
       System.out.println("Asignatura: " + this.asignatura);
     }
   }

   Pueden apreciar que usamos la palabra super que sirve para hacer referencia a los constructores, métodos y atributos de la clase base, la palabra this que hace referencia a la clase que usamos actualmente y la palabra @Override que reemplaza el método de la clase base con el mismo nombre.

  • Por último crearemos una clase principal con el nombre que ustedes gusten en este caso HerenciaApp la cual  probara el funcionamiento de nuestra herencia recién creada, imprimiendo por consola los datos de dichas clases.
    package qualityinfosolutions;

      public class HerenciaApp {

        public static void main(String[] args) {

          //Creación atributos Alumno
          String nombre_alumno;
          String rut_alumno;
          String colegio_alumno;
          int edad_alumno;
          int numero_matricula_alumno;

          //Creación atributos Profesor
          String nombre_profesor;
          String rut_profesor;
          String asignatura_profesor;
          int edad_profesor;

          //Asignación de valores para el Alumno
          nombre_alumno = "Juan Perez";
          rut_alumno = "1-9";
          colegio_alumno = "QualityInfoSolutions";
          edad_alumno = 18;
          numero_matricula_alumno = 123456;

          //Asignación de valores para el Profesor
          nombre_profesor = "Pedro Fuentes";
          rut_profesor = "11111111-1";
          asignatura_profesor = "Informática";
          edad_profesor = 45;

          Alumno alumno1 = new Alumno(colegio_alumno, numero_matricula_alumno, nombre_alumno, rut_alumno, edad_alumno);
          Profesor profesor1 = new Profesor(asignatura_profesor, nombre_alumno, rut_alumno, edad_alumno);

          alumno1.mostrarDatos();
          profesor1.mostrarDatos();

      }
    }

El resultado de este método será el siguiente:

Nombre: Juan Perez
Rut: 1-9
Edad: 18
Colegio: QualityInfoSolutions
Numero de Matricula: 123456
Nombre: Pedro Fuentes
Rut: 11111111-1
Edad: 45
Asignatura: Informática

 

Saludos espero les haya gustado

También te podría gustar...

2 Respuestas

  1. Lilian Gajardo dice:

    Muy bueno el tutorial 😉

  2. Maria dice:

    Muchas gracias, fue de gran ayuda 😀

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *