Introducción a la herencia.
Introducción a la herencia.
1.- Utilidad de la herencia:
En los lenguajes POO la herencia es una herramienta de redefinición de clases ya existentes para crear otras nuevas.
Dada una clase "padre", se pueden redefinir subclases "hijas" a partir de ella. Por ejemplo, a partir de la clase PersonaClinicaCovit, se puede redefinir Empleado y Paciente, y a su vez, de Empleado, Administrador, Enfermero, TécnicoLaboratorio.
public class Persona {
String nif, nom, apellido;
public Persona(){}
public Persona(String nif, String nom, String apellido){
this.nif = nif;
this.nom = nom;
this.apellido = apellido;
}
public String getNif() { return this.nif; }
public String getNom() { return this.nom; }
public String getApellido() { return this.apellido; }
public void setNif(String nif) { this.nif= nif;}
public void setNom(String nom) { this.nom= nom;}
public void setApellido(String apellido) { this.apellido= apellido;}
public boolean equals(Object o){
return o instanceof Persona
&& this.nif.compareTo(((Persona)o).nif)==0
&& this.nom.compareTo(((Persona)o).nom)==0
&& this.apellido.compareTo(((Persona)o).apellido)==0;
}
public String toString(){
return this.nif+"\t "+this.nom+"\t "+this.apellido;
}
}
Si ahora, a partir de esta clase "padre" construimos la subclase Paciente, solo redefiniremos la clase Persona en lo que nos interese.
public class Paciente extends Persona {
String telefono; int edad;
public Paciente(String nif, String nom, String apellido, String telefono, int edad){
super(nif, nom, apellido);
this.telefono= telefono;
this.edad= edad;
}
}
La subclase Paciente tiene dos atributos de objeto mas: telefono y edad. En los parámetros del constructor hemos de ponerlos todos, pero en el cuerpo del constructor nos referimos o redefinimos los de la superclase Persona son el método super(), y en él ponemos los atributos materiales: super(nif, nom, apellido); Los dos nuevos atributos de esta subclase Paciente los ponemos como siempre.
Sobrescritura de métodos:
Cualquier método heredado de la clase base se puede volver a escribir o sobrescribir en la clase derivada, total o parcialmente:
Sobrescritura completa: – Para ello, se define en la derivada un método con el mismo perfil (nombre y lista de parámetros, tipo resultante) que en la base; o con un código nuevo a propósito para la clase derivada.
public String toString() { return "Nif: " + this.nif+" Nombre:" + this. nom + " Apellido: " + this.apellido+ " Telefono: " + this.telefono+" Edad: " + this. edad; }
Sobrescritura parcial: – Cuando sólo se desea cambiar parcialmente el comportamiento del método heredado de la clase base. Se utiliza super en lugar de this para invocar el método correspondiente de la clase base.
public String toString() { return super.toString() + " Telefono: " + this.telefono+" Edad: " + this. edad; }
El equals utilizamos tal cual el mismo método de la clase Pesona, pues si tiene el mismo nif, el mismo nombre y apellido, ha de ser el mismo paciente.
Comentarios
Publicar un comentario