Categorías: Tutoriales

Herencia en Java

La herencia es una caracteristica de los lenguajes orientados a objetos la cual nos da la posibilidad de reutilizar codigo, esto es definir una clase a partir de otra clase comun. Supongamos que tenemos la necesidad de registrar caracteristicas y funciones de Empleados y Clientes en un programa cualquiera. Nos damos cuenta que tanto empleados como clientes comparten muchas caracteristicas en comun, nombre direccion edad etc, y seria tonto definirlas en ambas clases, por lo que creamos una clase que comparta sus caracteristicas comunes (variables y metodos) y luego a partir de esa clase creamos las demas, las clases que heredan posteriormente pueden incluir sus propias caracteristicas que la diferencian de las demas, ESTO ES HERENCIA.

Para que una clase herede de otra en java se utiliza la palabra reservada extends. La clase de la cual vamos a heredar no necesita especificar nada para lograrlo, simplemente en la clase en la cual heredaremos especificamos con la palabra extends y luego el nombre de la clase de la cual heredaremos. En esta clase llamaremos al metodo super, el cual nos permite registrar los valores en la superclase a traves de su constructor.

La clase de la cual heredan se le llama superclase y la clase que hereda es conocida como subclase, si B hereda de A y C hereda de B, entonces B y C son sublases de la superclase A. B seria descendiente directo de A y C seria descendiente indirecto de A. En java se trabaja lo que se conoce como herencia simple, la cual nos permite unicamente heredar de una sola clase, a diferencia de la herencia multiple que nos permite heredar de varias clases como en C++. Algunas tecnicas permite simular la herencia multiple en java, aunque en mi opinion no se deberia de implementar.

En el manejo de los modificadores de acceso cabe mencionar que:

  • private: Visible unicamente en la clase que se define
  • Sin Modificador: Visible a todas las clases del paquete
  • protected: visible a las subclases y a las clases del paquete
  • public: Visible a todas las clases.

Super se utiliza para llamar a variables y metodos de la clase padre.

Veamos un ejemplo simple de lo mas basico que explicamos aqui para comprender lo que es la herencia en java.

Clase Persona:

public class Persona {
    String nombre;
    String direccion;
    int edad;

    public Persona(){
        nombre = "";
        direccion = "";
        edad = 0;
    }

    public Persona(String n, String d, int e){
        nombre = n;
        direccion = d;
        edad = e;
    }
}

Clase Empleado:

public class Empleado extends Persona{
    String puesto;

    public Empleado(String nombre, String direccion, int edad,String puesto){
        super(nombre,direccion,edad);
        this.puesto = puesto;
    }

    public String getInformacion(){
        return "Nombre:"+nombre+"nDireccion:"+direccion+"nEdad:"+edad+"nPuesto:"+puesto+"n";
    }
}

Clase Cliente:

public class Cliente extends Persona{
    double credito;

    public Cliente(String nombre, String direccion, int edad, double credito){
        super(nombre,direccion,edad);
        this.credito = credito;
    }

    public String getInformacion(){
        return "Nombre:"+nombre+"nDireccion:"+direccion+"nEdad:"+edad+"nCredito:"+credito+"n";
    }
}

Clase Principal:

public class Main {
    public static void main(String args[]){
        Empleado e = new Empleado("Jonathan Melgoza","Calle Falsa 123",21,"Administrador");
        System.out.println(e.getInformacion());

        Cliente c = new Cliente("Jorge Perez","Calle Lejana 321",22,500.0);
        System.out.println(c.getInformacion());
    }
}

Resultado:

Jonathan Melgoza

Soy Jonathan Melgoza, Ingeniero en Sistemas Computacionales, Programador y Blogger, autor de un blog de Tecnologia y Programacion.

Ver comentarios

  • Hola!
    No entiendo por qué en la clase Persona, el constructor no usa this para referenciar a los parámetros? (soy medio nuevo en java).
    Gracias!

    • El uso de This se utiliza para acceder a las variables y metodos de la clase en la que estamos actualmente.

      En el ejemplo lo utilizamos en la clase empleados y clientes ya que en un momento dado tenemos dos variables diferentes con el mismo nombre, por ejemplo en la clase cliente recibimos el parametro credito y en la clase esta definida ya la variable credito, por lo que tenemos que especificar a java que a la variable this.credito (variable de la clase) le asignaremos la variable credito (variable que recibimos de parametro).

      Asi mediante this diferenciamos de la variable de clase de la variable que recibe el constructor, por lo tanto ya sabras por que no la utilizamos en la clase persona, simplemente porque las variables no tienen el mismo nombre ;)

  • una consulta, en el caso de android , tengo una clase que ya hereda una clase listActivity , pero quiero implementar un actionbar y en el manual me dice que devo extender de ActionbarActivity , como puedo implementarlo sin perder ya la clase listActivity

Entradas recientes

DeepSeek

2 días hace

Contacto

2 semanas hace

Smart-tv mute

2 semanas hace

STEAM OS

3 semanas hace

2025

1 mes hace

El podcast de Linux Hispano – #072 – El hardware libre debe consolidarse como el software libre

https://www.youtube.com/embed/z-xGk9c_eOw Guionista y locutor: Manuel Ignacio López Quintero.Fecha de publicación: 31 de diciembre de 2024.

1 mes hace