Curso Java. Polimorfismo y enlazado dinámico. Vídeo 43
Introducción a la Herencia en Java
Conceptos Clave: Polimorfismo y Enlazado Dinámico
- El curso se centra en la herencia en programación orientada a objetos, específicamente en Java, introduciendo los conceptos de polimorfismo y enlazado dinámico.
- Aunque estos términos pueden parecer complicados, el instructor promete simplificarlos con ejemplos prácticos.
Polimorfismo: Definición y Principio de Sustitución
- Se explica que el polimorfismo está relacionado con el principio de sustitución, que permite usar un objeto de una subclase donde se espera un objeto de la superclase.
- El polimorfismo implica que las variables objeto pueden comportarse de diferentes maneras según el contexto en el que se utilicen.
Ejemplo Práctico: Clase Empleado y Jefatura
- Se menciona que las variables objeto son polimórficas; por ejemplo, al crear una instancia de
Empleado, su comportamiento puede variar dependiendo del contexto.
- Se introduce un ejemplo práctico utilizando Eclipse para trabajar con las clases
EmpleadoyJefatura, mostrando cómoJefaturahereda deEmpleado.
Implementación en Eclipse
- En Eclipse, se revisa la clase
Jefatura, que tiene su propio constructor y métodos específicos comoDame sueldo, sobrescribiendo el método correspondiente de la clase padre.
- Se destaca la importancia del uso del término "super" para acceder a métodos de la clase padre desde una subclase.
Navegación entre Clases en Eclipse
- Al utilizar múltiples clases dentro del mismo archivo fuente, es crucial manejar bien la navegación para evitar confusiones al buscar métodos o campos.
Exploración del Método "Dame Sueldo" en Programación
Introducción al Método y Constructores
- Se menciona el método "Dame sueldo" como un menú para navegar entre diferentes clases, proporcionando información valiosa sobre los constructores de la clase empleado.
- Los métodos estáticos y constructores se identifican fácilmente, lo que permite ver qué métodos sobrescriben a otros mediante un símbolo triangular.
Información Adicional en el Panel de Outline
- El panel de outline ofrece información sobre campos de clase, incluyendo su estado (estático o no), facilitando la navegación hacia su declaración.
- En programas más complejos con múltiples clases, los botones del panel permiten ocultar o mostrar elementos específicos para una mejor organización visual.
Manejo de Clases y Objetos
- Se explica cómo ocultar campos privados y métodos estáticos en el panel, lo cual es útil para mantener la claridad en archivos extensos.
- La creación de una instancia de la clase jefatura se plantea como siguiente paso; se recuerda que ya existe un array con instancias de empleados.
Creación e Inicialización de Instancias
- Se hace referencia a instanciar objetos dentro del array previamente creado, recordando que cada objeto debe recibir parámetros iniciales adecuados.
- Al llamar al constructor de la clase empleado, se deben pasar parámetros específicos para establecer su estado inicial correctamente.
Establecimiento de Incentivos
- Una vez creada la instancia "jefe de recursos humanos", se procederá a establecer un incentivo utilizando el método correspondiente implementado anteriormente.
¿Cómo se implementa el polimorfismo en Java?
Herencia y Métodos en Clases
- Se menciona que la clase
jefaturahereda métodos de la claseempleado, comoDame fecha contratoyDame sueldo. Esto muestra cómo las subclases pueden extender o modificar el comportamiento de las superclases.
- Eclipse proporciona asistencia para utilizar métodos de la API de Java, destacando el método
establece incentivo, que es específico para la clase jefatura.
- Se crea una instancia de la clase jefatura y se establece un incentivo, lo que demuestra cómo se puede personalizar el comportamiento a través de instancias específicas.
Manejo de Arrays y Polimorfismo
- Se prepara un array llamado
mis empleadospara recibir un nuevo elemento, aumentando su tamaño a cinco. Esto ilustra cómo manejar colecciones dinámicas en programación orientada a objetos.
- Al agregar un objeto de tipo jefatura al array definido como tipo empleado, se ejemplifica el principio de sustitución: un objeto de una subclase puede ser tratado como un objeto de su superclase.
Principio de Sustitución
- El principio de sustitución permite almacenar objetos del tipo jefatura en una variable que espera un objeto del tipo empleado. Este concepto es fundamental en la programación orientada a objetos.
- La regla "es un" (esun) explica por qué esto es posible: dado que todos los jefes son empleados, se puede hacer esta asignación sin problemas.
Ejemplos Prácticos
- Se incrementa nuevamente el tamaño del array para incluir más elementos, mostrando flexibilidad en la gestión del almacenamiento dinámico.
- Se añade otro objeto jefatura al array con detalles específicos (nombre, salario), reafirmando que tanto empleados como subclases pueden coexistir dentro del mismo contenedor.
Uso de Bucles For Each
- Se recuerda que previamente se crearon bucles for each para aumentar salarios e imprimir información sobre los empleados. Esto resalta técnicas comunes para iterar sobre colecciones en Java.
- Para recorrer arrays definidos como tipos específicos (como empleado), es necesario declarar variables adecuadas. Esto asegura que las operaciones realizadas sean coherentes con los tipos esperados.
¿Cómo funciona el método Dame sueldo en la clase Empleado?
Llamada al método y contexto de ejecución
- Se está llamando al método
Dame sueldode la claseEmpleado, lo que indica que la variableepertenece a esta clase.
- Al utilizar el asistente de Eclipse, se pueden ver todos los métodos disponibles para el objeto
e, incluyendoDame fecha contrato,Dame nombreyDame sueldo.
Ejecución del programa y comportamiento del ID
- Al ejecutar el programa, se observa información sobre todos los objetos creados hasta ese momento, destacando un comportamiento curioso con los IDs asignados.
- Los IDs no se asignan en orden secuencial debido a cómo están establecidos en el método Main; esto afecta el orden de impresión.
Polimorfismo y cálculo del sueldo
- El sueldo del jefe de recursos humanos (ID 1) es 60320, aunque inicialmente se le asignó 55,000. Esto sugiere que hay un cálculo adicional involucrado.
- El polimorfismo permite que la variable
eactúe como una instancia de tipoEmpleadoo como una instancia de tipoJefatura, dependiendo del contexto.
Método específico y cálculo final
- Se realiza un cálculo manual para verificar si el sueldo coincide con lo esperado. La suma del incentivo muestra que se llama al método correcto según el tipo de objeto.
- Al recorrer el array con un bucle for each, se invocan diferentes métodos (
Dame sueldodeEmpleadoo deJefatura) dependiendo del contexto.
Enlazado dinámico en Java
- La máquina virtual de Java utiliza enlazado dinámico para determinar qué método llamar durante la ejecución, permitiendo así una flexibilidad importante en la programación orientada a objetos.