Este documento presenta conceptos sobre herencia, polimorfismo e interfaces en programación orientada a objetos. Explica que el polimorfismo permite que objetos de una clase y sus subclases respondan de forma diferente a un mismo método. Las interfaces definen métodos que deben implementarse en una clase. La herencia permite que una clase herede atributos y métodos de otra clase.
Comunidades Virtuales de Aprendizaje Caracteristicas.pptx
Unidad 4 polimorfismo y herencia
1. UNIDAD 4. HERENCIA Y
POLIMORFISMO EN LA POO.
REPÚBLICA BOLIVARIANA DE VENEZUELA
MINISTERIO DEL PODER POPULAR PARA LA DEFENSA
UNIVERSIDAD NACIONAL EXPERIMENTAL POLITÉCNICA
DE LA FUERZA ARMADA NACIONAL
Docente:
Amado Arcaya
Santa Ana de Coro, Octubre del 2020
2. INDICE
• Polimorfismo y Ligaduras.
• Clases de interfaz.
• Extensiones de Clases.
• Herencia.
3. Objetivos de aprendizajes
Objetivo Específicos:
Definir los conceptos básicos de polimorfismo, herencia
y ligadura
Establecer las clases de interfaz en la POO
Explicar las Extensiones de las clases en la POO
Comprender la jerarquia de Herencia y las conversiones
en la herencia en la POO
Objetivo General: Conocer la utilidad y la
estructuras y método del polimorfismo, herencia y
ligadura.
4. Polimorfismo y Ligaduras.
El polimorfismo es una relajación del
sistema de tipos, de tal manera que
una referencia a una clase (atributo,
parámetro o declaración local o
elemento de un vector) acepta
direcciones de objetos de dicha clase
y de sus clases derivadas (hijas,
nietas, …).
Definiciones
es la capacidad que tienen los
objetos de una clase en ofrecer
respuesta distinta e
independiente en función de los
parámetros (diferentes
implementaciones) utilizados
durante su invocación.
5. Ejemplo de Polimorfismo
Alumno, Profesor y Bedel.
•Creamos un array de Persona donde
incluimos objetos de Alumno, Profesor
y Bedel.
Al invocar al método imprimir(), sobrescrito
en las clases Alumno, Profesor y Bedel,
sobre el array de Persona, cada objeto
utilizará su propia implementación del
método
Persona[] grupo = {new Alumno(…),
new Profesor(…), new Bedel(…), new Alumno(…)};
for (int i=0; i<grupo.length; i++){
grupo[i].imprimir();
}
6. Otro Ejemplo
class Animal {
public void makeSound() {
System.out.println("Grr...");
}
}
class Cat extends Animal {
public void makeSound() {
System.out.println("Meow");
}
}
class Dog extends Animal {
public void makeSound() {
System.out.println("Woof");
}
}
public static void main(String[ ] args) {
Animal a = new Dog();
Animal b = new Cat();
}
a.makeSound();
//Outputs "Woof"
b.makeSound();
//Outputs "Meow"
Se agrega estas dos líneas
referencia a los animales
7. Ligaduras
Se llama al método
correcto, aunque nos
estemos refiriendo al
objeto de la subclase a
través de una referencia
a la superclase permite detectar en
tiempo de ejecución
cuál es el método
adecuado para llamar
El compilador no genera
el código para llamar al
método en tiempo de
compilación
Genera un código
para calcular qué
método llamar
9. Interfaces de una clase en las POO
Las Interfaces son usadas para
indicar qué métodos debe
obligatoriamente implementar
(contener) una Clase (aunque
no tienen por qué comportarse
del mismo modo).
Los métodos definidos en
una Interface deben ser public.
10. Ejemplos
package EjemplosPOO.ejemplo03;
public class Main
{
public static void main(String[] args)
{
Carpintero c = new Carpintero();
Fontanero f = new Fontanero();
c.setNombreCompleto("Pedro Pérez Perera");
c.trabajar();
f.setNombreCompleto("Antonio Miranda Mena");
f.trabajar();
}
}
Main.java package EjemplosPOO.ejemplo03;
public interface IEmpleado
{
// Método que deberán definir las clases que
implementen esta interface
public void trabajar();
}
IEmpleado.java
package EjemplosPOO.ejemplo03;
public class Persona
{
private String nombreCompleto;
// -------------------------
public Persona() {
}
// -------------------------
public String getNombreCompleto() {
return this.nombreCompleto;
}
// -------------------------
public void setNombreCompleto( String nombreCompleto
) {
this.nombreCompleto = nombreCompleto;
}
}
Persona.java
11. package EjemplosPOO.ejemplo03;
public class Carpintero extends Persona implements
IEmpleado
{
public Carpintero() {
}
// -------------------------
@Override
public void trabajar() {
System.out.println( this.getNombreCompleto() + " está
realizando trabajos de carpintería");
}
}
Carpintero.java (implementa la interface IEmpleado indicándolo con implements, y además hereda de
Persona):
package EjemplosPOO.ejemplo03;
public class Fontanero extends Persona implements
IEmpleado
{
public Fontanero() {
}
// -------------------------
@Override
public void trabajar() {
System.out.println( this.getNombreCompleto() + " está
realizando trabajos de fontanería");
}
}
Fontanero.java (implementa la interface
IEmpleado indicándolo con implements, y
además hereda de Persona):