Herencia en java
UNIDAD VI
HERENCIA
En POO existen mecanismos especiales que
proporcionan la capacidad de definir una clase en
términos de una clase previamente definida.
Empleado
+name : String=“”
+salario : double
+cumple .Date
+getDetails() :String
Administrador
+departamento :String
public class Administrador extends Empleado{
public String departamento;
}
Implementaciónde la clase Administrador que
hereda de las clase Empleado.
HERENCIA
La herencia o relación “es-un” es la relación que
existe entre dos clases, en la que una clase
denominada derivada se crea a partir de otra ya
existente, denominada clase base.
Programador es
un
tipo
de
empleado, pero
con
caract.
propias
EMPLEADO
PROGRAMADOR
FIGURA
TRIÁNGULO
La claseTriángulo es
derivada de Figura, y
tendrá en común un
comportamiento y un
estado, aunque luego
tendrá sus propias
características
class nombre_clase extends nombre_clase_derivada
EJERCICIO. Representar la jerarquía de clases de
publicaciones que se distribuyen en una librería: revistas,
libros,
étc.
Todas las publicaciones tienen en común una editorial y
una fecha de publicación.Publicación
Revista
Libro
package editorial;
public class Publicacion {
public void nombrarEditor(String nomE) {…}
public void ponerFecha(long fe) {…}
private String editor;
private long fecha;
}
public class Revista extends Publicacion {
public void fijarNumeroAño(int n) {…}
public void fijarCirculacion (long n) {…}
private int numerosPorAño;
private long circulacion;
}public class Libro extends Publicacion {
public void ponerISBN(String nota) {…}
public void ponerAutor(String nombre) {…}
privatec String ISBN;
private String autor;
}
Libro lib = new Libro();
lib.nombraEditor(“McGrawHill”);
lib.ponerFecha(990606);
lib.ponerISBN(“84-481-2015-9”);
lib.ponerAutor(“Mackoy, José Luis”);
EJEMPLO: La clase Fecha define el método escribir(), la claseFechaJuliana hereda de la clase Fecha y sobreescribe el método.
class Fecha
{
private int d, m, a;
public Fecha (int dia, int mes, int año) {
d=dia; m=mes; a=año;
}
public Fecha() {}
public void escribir() {
System.out.println(“\n” + d + “ \ “ + m + “ \ “ + a);
}
class FechaJuliana extends Fecha {
private int numDias;
public FechaJuliana (int dia, int mes, int año) {…}
public voidescribir()
{
super.escribir(); // llamada al método de la clase Fecha
System.out.println(“Días transcurridos : “ + numDias);
}
}
HERENCIA SIMPLE
Java permite que una clase se extienda a otra clase solamente. Esta
restricción es llamada herencia simple.
Sin embargo, esto se puede solventar de la sig. manera:
HERENCIA MÚLTIPLE
Herencia múltiple es un tipo de herencia en
laque una clase hereda el estado
(estructura) y el comportamiento de más de
una clase base. En otras palabras, hay
herencia múltiple cuando una clase hereda
de más de una clase, es decir, existen
múltiples clases base (padres) para la clase
derivada (hija).
En herencia simple, una clase derivada hereda exactamente de
una clase base (tiene solo un padre). Herencia múltiple implicamúltiples clases bases (tiene varios padres una clase derivada).
Persona
Persona
Poste
Persona
Persona
Farola
Barco
Persona
Luz
Avión
Hidroavión
Redefinición de métodos en la clase
derivada
Un problema que se plantea cuando se manejan clases
derivadas es la dominación o prioridad, que se produce
cuando existen métodos en clases derivadas con el mismo
nombre queotros métodos de las clases base. Consideremos el
caso siguiente:
class Base {
public void metriv (int k) {…}
public void oferta (String h, int n) {…}
}
class Derivada extends Base {
//oculta a metriv() de la clase Base
public void metriv (int k) {…}
public void oferta (String h) {…}
}
En herencia, los métodos en las clases derivadas con la misma signatura (igual
nombre, tipo de...
Regístrate para leer el documento completo.