iron

iron

jueves, 31 de marzo de 2011

herencia

Herencia en Java

La idea de la herencia es permitir la creación de  nuevas clases basadas en clases existentes.
Cuando heredamos de una clase existente, reusamos  (o heredamos) métodos y campos, y agregamos nuevos campos y métodos para cumplir con la situación nueva.
Cada vez que encontremos la relación "es-un" entre dos clases, estamos ante la presencia de herencia.

La clase ya existente es llamada superclass, o clase base, o clase padre.
La clase nueva es llamada subclase, clase derivada, o clase hija.

A través de la herencia podemos agregar nuevos campos, y podemos agregar o sobre montar métodos (override). Sobre montar un método es redefinirlo en la case heredada.


Destacar uso de super para invocar al constructor de la clase base y para invocar a métodos sobremontados.

Jerarquía de Herencia


Polimorfismo
En Java una variable o nombre usado para referirse a un objeto de una clase X puede usarse para referirse a cualquier objeto de cualquier subclase de la clase X.

Por ejemplo: Si tenemos  Employee e;
e= new Employee(...); o
e= new Manager(...);
Esto también aplica a arreglos de Employee, cuyas entradas podrían referirse a instancias de cualquier subclase de Employee.
El inverso no es válido. No se puede asignar una instancia de la superclase a un nombre para la subclase.
 
ejercicio de herencia
 
public class Persona {

    String rut;
    String nombre;

    boolean cabello;
    String colorCabello;

    Persona()
    {

    }

    Persona(String nombre)
    {
        this.nombre = nombre;
    }

    public String getNombre()
    {
        return this.nombre;
    }

    public void  setNombre(String nombre)
    {
        this.nombre = nombre;
    }

}

La clase alumno


public class Alumno  extends Persona{
   
    String apellido;
    /** Creates a new instance of Alumno */
    public Alumno() {
        super();
    }
   
    public Alumno(String nombre)
    {
        super(nombre);
    }
    void setApellido(String apellido)
    {
        this.apellido = apellido;
    }
   
    public String getNombre()
    {
        return this.nombre+" "+this.apellido;
    }
   
    public  static void main (String args[])
    {
        Alumno alumno = new Alumno();
           alumno.setNombre("Naito");
           alumno.setApellido("Neko");
        Alumno alumnoDos = new Alumno("Pepe");
            alumnoDos.setApellido("Grillo");
       
           System.out.println("Alumno 1 ->\t"+alumno.getNombre());
           System.out.println("Alumno 2 ->\t"+alumnoDos.getNombre());
    }

this

la funcion "this" en java significa un apuntador que nos da una funcion en la cual podemos referirnos precisamente a un objeto en especifico.
Dependiendo del tipo de función en la cual se use this, tendrá diferente tipo.
En una función miembro no constante:
NomObjeto * const
//(apuntador constante a un objeto no constante)
En una función miembro constante:
const NomObjeto * const //(apuntador constante a un objeto constante)