Diana Progra
Diana Progra
Diana Progra
Unidad III:
Herencia y polimorfismo
Grupo: 2DV
Esta particularidad permite crear una estructura jerárquica de clases cada vez más
especializada. La gran ventaja es que uno ya no debe comenzar desde cero
cuando desea especializar una clase existente. Como resultado, se pueden
adquirir bibliotecas de clases que ofrecen una base que puede especializarse a
voluntad (la compañía que vende estas clases tiende a proteger las datos
miembro usando la encapsulación).
-POLIMORFISMO
El polimorfismo es la habilidad de una función, método, variable u objeto de
poseer varias formas distintas. Podríamos decir que un mismo identificador
comparte varios significados diferentes.
*Polimorfismo de Sobrecarga
*Paramétrico
*Polimorfismo de inclusión
-Inclusión: Es cuando se puede llamar a un método sin tener que conocer su tipo,
así no se toma en cuenta los detalles de las clases especializadas, utilizando una
interfaz común.
-OBJETOS DE CLASE BASE
ventana.mostrar();
ventana.cambiarDimensiones(10, 10);
ventana.mostrar();
-CLASE DERIVADA
La clase derivada heredará los miembros dato de la clase base y las funciones
miembro, y tendrá un miembro dato más, el título de la ventana.
super(x, y, w, h);
inicializa los cuatro miembros dato de la clase base Ventana: x, y, ancho, alto. A
continuación, se inicializa los miembros dato de la clase derivada, y se realizan las
tareas de inicialización que sean necesarias. Si no se llama explícitamente al
constructor de la clase base Java lo realiza por nosotros, llamando al constructor
por defecto si existe.
Redefine la función miembro mostrar para mostrar una ventana con un título.
En la clase derivada se define una función que tiene el mismo nombre y los
mismos parámetros que la de la clase base. Se dice que redefinimos la
función mostrar en la clase derivada. La función miembro mostrar de la clase
derivada VentanaTitulo hace una llamada a la función mostrar de la clase
base Ventana, mediante
super.mostrar();
ventana.desplazar(4, 3);
ventana.cambiarDimensiones(10, -5);
ventana.mostrar();
ventana.mostrar();
ventana.desplazar(4, 3);
Desde el objeto ventana de la clase derivada podemos llamar a las funciones
miembro definidas en la clase base.
ventana.cambiarDimensiones(10, -5);
ventana.mostrar();
-CLASES ABSTRACTAS
Una clase abstracta puede contener métodos no-abstractos pero al menos uno de
los métodos debe ser declarado abstracto.
Una clase abstracta no se puede instanciar pero si se puede heredar y las clases
hijas serán las encargadas de agregar la funcionalidad a los métodos abstractos.
Si no lo hacen así, las clases hijas deben ser también abstractas.
-INTERFAZ
Una interface es una variante de una clase abstracta con la condición de que
todos sus métodos deben ser asbtractos. Si la interface va a tener atributos, éstos
deben llevar las palabras reservadas static final y con un valor inicial ya que
funcionan como constantes por lo que, por convención, su nombre va en
mayúsculas.
interface Nomina
{
public static final String EMPRESA = "Patito, S. A.";
public void detalleDeEmpleado(Nomina obj);
}
Una clase implementa una o más interfaces (separadas con comas ",") con la
palabra reservada implements. Con el uso de interfaces se puede "simular" la
herencia múltiple que Java no soporta.
class Empleado implements Nomina
{
...
}
En este ejemplo, la clase Empleado tiene una clase padre llamada Object
(implícitamente) e implementa a la interface Nomina, quedando el diagrama de
clases de la siguiente manera:
BIBLIOGRAFIA
http://profesores.fi-b.unam.mx/carlos/java/java_basico4_9.html
https://www.ctr.unican.es/asignaturas/pp/apuntes/03-herencia_3en1.pdf
https://www.luaces-novo.es/polimorfismo-en-java/
http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/herencia/herencia.htm