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;
}
}
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()); }