Herencia Y Polimorfismo

Páginas: 14 (3291 palabras) Publicado: 26 de septiembre de 2012
Bibliografía
• Capítulo 4 del libro “Mark Allen Weiss. Estructuras de

Herencia, polimorfismo y
genericidad

Datos en Java. Pearson Educación, 2000”

• Capítulos 8 a 10 del libro “P.J. Deitel, H.M. Deitel: Java.
Cómo programar (7ª edición), Prentice Hall, 2008”

Lección 4

• Y otros....
1

2

Prólogo

Esquema

• Recordar…

1.
2.
3.
4.

Programación Orientada a Objetos=
– Soporte sintáctico explícito para abstracción de
datos (TADs) +
– Cambio de perspectiva (los programas son
apéndices de los datos) +
– Prestaciones asociadas a la jerarquía de clases
(herencia, polimorfismo, etc.)

3

Herencia
Polimorfismo
Herencia múltiple
Genericidad

4

Herencia

Herencia
Persona

• Relación de herencia (“es un”, “es una”):

– todos los alumnos sonpersonas
es una
es una
– todos los profesores son personas
Alumno
Profesor
• La herencia es un mecanismo por el que se
pueden crear nuevas clases a partir de
otras existentes
– heredando y posiblemente añadiendo atributos
– heredando, y posiblemente modificando, y/o añadiendo métodos
• Un método o atributo no puede ser suprimido en el mecanismo de
herencia
• Terminología
Personaclase original

clase base

superclase

padre

Alumno

clase extendida

clase derivada

subclase

hijo

• El valor de la herencia radica en:
– La posibilidad de definir en la subclase adiciones
o sustituciones a las características de la
superclase (Especialización).
– La posibilidad de factorizar las propiedades
comunes a muchos objetos y definirlas en una
clase base comúna ellos (Generalización).
Es un mecanismo que permite la reutilización de
código

5

Herencia de atributos
Al extender una clase se heredan todos los
atributos del padre.
Se pueden añadir nuevos atributos.
public class Alumno extends Persona {
private Asignatura[] matricula;
public Alumno(String n, int e,
String d, Asignatura [] matrícula)
{

6

Herencia de métodos

publicclass Persona {
private String nombre;
private int edad;
private String dni;
public Persona(String n, int e,
String d) {
...
}
Persona
...
-nombre: String
}
-edad: int
-dni: String

• Al extender una clase
– se heredan todos los métodos del padre
– se puede añadir nuevos métodos
• La nueva clase puede elegir para los métodos heredados:
– redefinir el método: se vuelve a escribir suimplementación
(conservando su cabecera)
• el nuevo método puede usar el del padre y hacer más cosas:

...

}

programación incremental

...

}
public class Profesor extends Persona {
private double sueldo;
private int antigüedad;

Alumno

Profesor

-Asignatura[]:

-sueldo: double
-antigüedad: int

matrícula

public Profesor(String n, int e,
String d, double s, int a){

• o puede ser totalmente diferente
– dejarlo como está: no cambiar nada
(no aparecerá explícitamente en la clase derivada)

• La herencia se puede aplicar múltiples veces
– da lugar a una jerarquía de clases

...

}
...

}

7

8

Herencia de métodos

Objetos y herencia
Persona per = new Persona(. . .);
(.

Alumno alu = new Alumno

. .); per

• Los métodos de lasuperclase no se repiten en las subclases

Profesor pro = new Profesor

salvo que se hayan redefinido
• Se puede hacer herencia sin
añadir métodos ni atributos

Bedel bed = new Bedel
Persona
-nombre: String
-edad: int
-dni: String

Bedel

heredados
añadidos

getNombre(): String
getEdad(): int
getDni(): String

Alumno

Profesor

-sueldo: double
-antigüedad: int

pro:Alumno
nombre: String
edad: int
dni: String
Asignatura[]: matrícula
getNombre(): String
getEdad(): int
getDni(): String
hallarCursoMasBajo
Matriculado(): int

alu

+hallarCurso
MasBajoMatri
culado: int

. .);

getNombre(): String
getEdad(): int
getDni(): String

:Bedel
nombre: String
edad: int
dni: String

-Asignatura[]:
matrícula

:Persona
nombre: String
edad:...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • HERENCIA Y POLIMORFISMO
  • herencia y polimorfismo
  • herencia y polimorfismo
  • Herencia y polimorfismo
  • Herencia y polimorfismo
  • Encapsulamiento herencia y polimorfismo
  • Herencia y polimorfismo en c++
  • herencia y polimorfismo en java

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS