Estancia y estadia
Programación de aplicaciones
HERENCIA Y POLIMORFISMO
Herencia en el mundo real
2
Cosa
Medio de telecomunicación
Medio de transporte
Objeto de oficina Coche Vehiculo aéreo
Herencia en Java
3
Java permite definir una clase como subclase de una clase padre.
class clase_hija extends clase_padre { .......... }
Clase Padre
Clase Hija
Ejemplo de Herencia
4public class Polygon { protected int width, height; public void set_values (int a, int b) { width=a; height=b;} } class Rectangle extends Polygon { public int area() { return (width * height); } } class Triangle extends Polygon { public int area() { return (width * height / 2); } public static void main(String[] args) { Rectangle rect; Triangle trgl; rect = new Rectangle(); trgl = newTriangle();
Rectangle +area() Triangle +area() Polygon #width #height +set_values()
rect.set_values (4,5); trgl.set_values (4,5);
System.out.print("area" + rect.area() + '\n' + trgl.area() + '\n'); }}
Constructores y Herencia
5
Cuando se declara un objeto de una clase derivada, se ejecutan los constructores siguiendo el orden de derivación, es decir, primero el de la clase base, ydespués los constructores de las clases derivadas de arriba a abajo. Para pasar parámetros al constructor de la clase padre:
super (para1, para2, ..., paraN)
Ejemplo de super
6
class Persona { private String nombre; private int edad; public Persona() {} public Persona (String n, int e) { nombre = n; edad = e; } } class Alumno extends Persona { private int curso; private StringnivelAcademico; public Alumno (String n, int e, int c, String nivel) { super(n, e); curso = c; nivel_academico = nivel; } public static void main(String[] args) { Alumno a = new Alumno("Pepe", 1, 2, "bueno"); } }
¿Qué es el polimorfismo?
7
El polimorfismo significa “muchas formas”. En términos de programación, el polimorfismo permite que un solo nombre de clase o de método representediferente código seleccionado mediante algún mecanismo automático. De esta forma, puesto que un nombre puede representar diferente código, también puede representar muchos comportamientos distintos. Un lenguaje que acepta el polimorfismo es un lenguaje polimórfico. Un lenguaje monomórfico no acepta el polimorfismo, está restringido a un comportamiento estático, porque cada nombre está ligado enforma estática a su código.
ObjetoPersonalidad.java
8
public class ObjetoPersonalidad { public String hablar() { return "Soy un objeto.";
}
}
ObjetoPesimista.java ObjetoOptimista.java
9
public class ObjetoPesimista extends ObjetoPersonalidad { public String hablar() { return "El vaso está medio vac¡o.";
}
}
public class ObjetoOptimista extends ObjetoPersonalidad { publicString hablar() { return "El vaso está medio lleno."; } }
ObjetoIntrovertido.java ObjetoExtrovertido.java
10
public public class ObjetoIntrovertido extends ObjetoPersonalidad { public String hablar() { return “Hola.";
}
}
public class ObjetoExtrovertido extends ObjetoPersonalidad { public String hablar() { return "Hola, bla, bla, bla, sabías que bla, bla, bla."; } }ObjetoPersonalidad.java
11
Estas clases conforman una jerarquía de herencia. La clase base, ObjetoPersonalidad, declara un método: hablar(). Cada subclase redefine hablar() y devuelve su propio mensaje con base en su personalidad. La jerarquía establece relaciones de sustituibilidad entre los subtipos y su madre.
EjemploPersonalidad.java
12
public class EjemploPersonalidad {public static void main( String [] args ) { ObjetoPersonalidad personalidad = new ObjetoPersonalidad();
ObjetoPesimista pesimista = new ObjetoPesimista();
ObjetoOptimista optimista = new ObjetoOptimista(); ObjetoIntrovertido introvertido = new ObjetoIntrovertido(); ObjetoExtrovertido extrovertido = new ObjetoExtrovertido();
// la sustituibilidad permite hacer lo siguiente
ObjetoPersonalidad...
Regístrate para leer el documento completo.