6/07/2011

Ejemplo de Herencia en Java

Acá tenemos el ejemplo básico de herencia en Java. En este caso la clase Ciudadano hereda desde la clase Persona, para tomar funcionalidad y extenderla.

class Humano {
    protected String nombre;
    protected String apellido;
    public Humano(String nombre,String apellido) {
        this.nombre = nombre;
        this.apellido = apellido;
    }
    public String nombreCompleto() {
        return this.apellido + ", " + this.nombre;
    }
    public String identificacion() {
        return this.nombreCompleto();
    }
    
}

class Ciudadano extends Humano {
    protected String documento;

    public Ciudadano(String nombre,String apellido, String documento) {
        super(nombre,apellido);
        this.documento = documento;
    }

    public String identificacion() {
        return super.identificacion() + ", documento: " + this.documento;
    }
}


public class Herencia {
    public static void  main (String args[]) {
        Humano a = new Humano("Emilio","Rosso");
        Ciudadano b = new Ciudadano("Emilio","Rosso","3052454545");
        Humano [] arregloDeHumanos;
        arregloDeHumanos.push(a);
        arregloDeHumanos.push(b);
        identificarPolimorfico(arregloDeHumanos);
    }

    public static void identificarPolimorfico(Humano [] arregloDeHumanos) {
        for(int i = 0; i < arregloDeHumanos.length ; i++) {
            System.out.println("Identificando: " + arregloDeHumanos[i].identificacion());
        }
    }

}

5 comentarios:

José Leonardo Diaz Ordoñez dijo...

arregloDeHumanos.push(a); //esta mal

no es un metodo de un array nativo en Java, primero habria que inicializar el array y luego agregar en cada posicion el objeto.

Humano [] arregloDeHumanos = new Humano[2];
arregloDeHumanos[0] = a;
arregloDeHumanos[1] = b;

Erika Paola Camberos Rojas dijo...

Muy buena observación, gracias.

Anónimo dijo...

Muy bien, me ha servido de mucha ayuda. Gracias!!

PEDRO LEON dijo...

Tiene razon Jose Leonardo ;) gracias

Jorge Del Campo Antonio dijo...

Tengo una duda respecto a la palabra reservada "protected".
Sé que de esta manera, todos aquellos atributos de una clase que vienen precedidos del modificador "protected" serán visibles desde todas las clases hijas de la clase abstracta donde se declara ese atributo protected.
Así pues si en la clase Empleado definimos:

public abstract class Empleado
{
protected int sueldo;
. . .
}

entonces desde la clase Ejecutivo (que extiende de Empleado) se puede acceder al dato miembro sueldo, mientras que si se declara private no.

Así pues... de qué me sirve poner protected, si la puedo poner private y acceder a ella mediante getters y setters???