Herencia & porlimorfismo

Páginas: 8 (1752 palabras) Publicado: 27 de junio de 2013
4.- Herencia y polimorfismo

1.  Herencia
2.  Polimorfismo
3.  Interfaces

1

1. Herencia
1.1. Introducción
1.2. Los constructores en la herencia
1.3. Modificadores de acceso
1.4. La clase Object
1.5 Herencia vs. composición

2

1.1.- Introducción
•  La herencia permite definir clases (subclases) a partir de otra clase
más genérica (superclase).
•  La subclase reúne todas lapropiedades de la superclase, además
de las suyas propias.
•  La herencia potencia la reutilización de código, genera código
más fiable y robusto y reduce el coste de mantenimiento.

Persona

Persona
nombre
apellidos
dni
mostrarNombre
mostrarDNI

Estudiante

Estudiante
numExpediente
mostrarNumExp

class Estudiante extends Persona { . . .

3

class Persona(){
Stringnombre, apellidos, dni;
void mostrarNombre(){
System.out.println(“Nombre: ” + apellidos + “,” + nombre);
}
void mostrarDNI() {
System.out.println(“DNI: ” + dni);
}
}
class Estudiante extends Persona {
String numExpediente;
void mostrarNumExp(){
System.out.println(“Núm. Exp. ” + numExpediente);
}
}
class Ejemplo {
public static void main(String args[]) {
Estudiante e = new Estudiante();e.nombre = “Ana”;
e.apellidos = “García”;
e.dni = “1234567”;
e.numExpediente = “10001”;
e.mostrarNombre();
e.mostrarNumExp();
}
}

4

1.1.- Introducción
•  En Java no se permite la herencia múltiple.
A

A

B

C
Error

B

C
Correcto

•  Una subclase hereda todos los métodos y atributos de la superclase
EXCEPTO:
–  Atributos y métodos privados
–  Constructores (no seheredan pero sí se ejecutan)
5

1.2.- Los constructores en la herencia
• 

Conceptos previos: toda clase, por defecto, contiene un constructor sin
parámetros y vacío.

class Esfera(){
double radio;
Esfera() {} // Este constructor existe sin necesidad de escribirlo
}
Esfera e = new Esfera();

• 

Correcto

El constructor por defecto se pierde si escribimos cualquier otroconstructor.

class Esfera(){
double radio;
Esfera(double r) {
radio = r;
}
}
Esfera e1 = new Esfera();
Esfera e2 = new Esfera(10);

Incorrecto. No existe constructor sin parámetros
Correcto
6

1.2.- Los constructores en la herencia
•  Los constructores no se heredan.
class Esfera(){
double radio;
Esfera(double r) {
radio = r;
}
Esfera() {
radio = 1;
}
}
class Planeta extendsEsfera {
int numSatelites;
Planeta(double r, int ns) {
radio = r; numSatelites = ns;
}
}
Planeta p1
Planeta p2
Planeta p3
Esfera e =

= new Planeta(6378, 1);
= new Planeta(6378);
= new Planeta();
new Esfera(6378);

¿Correcto / Incorrecto?
¿Correcto / Incorrecto?
¿Correcto / Incorrecto?
¿Correcto / Incorrecto?

7

1.2.- Los constructores en la herencia
•  Cuando creamos unobjeto de una subclase, el constructor de la
clase padre TAMBIÉN se ejecuta:
class A(){
A() { System.out.println(“En A”); }
}
class B extends A {
B() { System.out.println(“En B”); }
}
class Demo {
public static void main(String args[]) {
B b = new B();
}
}
Salida por pantalla:
En A
En B

•  Primero se ejecuta el constructor de la superclase y luego el de la
subclase

8

1.2.-Los constructores en la herencia
•  ¿Qué constructor se ejecuta en la superclase? → El constructor sin
parámetros, a no ser que “digamos lo contrario”
class A(){
int i;
A() { i = 0; }
A( int i ){ this.i = i; }
}
class B extends A {
int j;
B() { j = 0; }
B( int j ){ this.j = j; }
}
class Demo {
public static void main(String args[]) {
B b1 = new B(); System.out.println(“i=“ + b1.i +“j=“ + b1.j);
B b2 = new B(5);System.out.println(“i=“ + b2.i + “j=“ + b2.j);
}
}
Salida por pantalla:
i=0 j =0
i=0 j=5

9

1.2.- Los constructores en la herencia
•  ¿Cómo podemos forzar la ejecución de un constructor determinado
en la clase padre (superclase)?
class B extends A {
int j;
B() { j = 0; }
B( int j ){
super(j); // Ejecuta un constructor en la superclase que
//...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • La herencia
  • Herencia
  • la herencia
  • la herencia
  • Herencia
  • Herencia
  • Herencia
  • Herencias

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS