Curso Java. Clases Abstractas II. Vídeo 46
¿Cómo implementar clases abstractas en Java?
Introducción a las Clases Abstractas
- El video se centra en la implementación de clases abstractas en Java, continuando con el tema del video anterior.
- Se va a crear una clase
Persona, de la cual heredarán las clasesEmpleadoyAlumno.
Creación de la Clase Principal
- Se crea una nueva clase llamada
UsoPersona, que contendrá el métodomain.
- Se reutiliza el código existente de la clase
Empleadopara evitar programar desde cero.
Modificación de Clases Existentes
- Para evitar conflictos por duplicidad, se renombra la clase a
Empleado2.
- Se discute sobre los modificadores de acceso (public, private y por defecto), explicando que sin un modificador se considera por defecto.
Ajustes en la Clase Empleado
- Se eliminan métodos innecesarios como
DameNombre, que será trasladado a la futura clasePersona.
- La variable nombre también se elimina de
Empleado2, manteniendo solo los campos relevantes como sueldo e ID.
Creación de la Clase Persona
- La clase
Personase diseñará como una clase abstracta que servirá como base para otras clases.
- La creación de esta clase implica definir variables y un constructor que inicialice atributos importantes, como el nombre.
Implementación del Constructor
- Al crear el constructor, se establece un parámetro llamado "nom" para asignar valor al atributo nombre.
- Eclipse ayuda al marcar errores si no se utiliza correctamente la palabra reservada 'abstract' al definir la clase.
Creación de Métodos en Clases Abstractas
Definición de la Clase Persona
- Se establece un parámetro
nombreen el constructor, asignando este valor a la variable de instancianombre.
- La clase
Personatendrá dos métodos:Dame nombre, que devuelve el nombre, yDame descripción, que debe ser implementado por las clases que hereden dePersona.
Implementación del Método Dame Nombre
- El método
Dame nombrees simple y solo contiene una instrucción para devolver el nombre.
- Se crea el método con la declaración pública y se utiliza una única instrucción:
return nombre.
Declaración del Método Abstracto
- El método
Dame descripciónse declara como abstracto, lo que significa que no tiene implementación en la clase base.
- Para declarar un método abstracto, se usa la palabra reservada
abstract, seguida del tipo de dato y el nombre del método.
Errores Relacionados con Métodos Abstractos
- Eclipse señala errores si hay métodos abstractos sin declarar la clase como abstracta.
- Al pasar el ratón sobre los errores, Eclipse indica que la clase debe ser declarada como abstracta para definir métodos abstractos.
Estructura de Herencia
- Al declarar una clase como abstracta, se establece un patrón para las clases derivadas; deben implementar los métodos abstractos heredados.
- La declaración de un método abstracto no incluye llaves; solo se define su firma. Esto ayuda a establecer claramente cómo será la herencia entre clases.
Herencia en Clases Derivadas
Finalización de la Clase Persona
- La clase persona está diseñada para ser poco especializada al estar en lo alto de la jerarquía de herencia.
Creación de Clases Derivadas
- Se procederá a crear una nueva clase llamada
Empleado2, que heredará características de la clase persona.
Llamada al Constructor Padre
- Al heredar, es necesario llamar al constructor de la superclase usando la palabra reservada
super.
Pasaje de Parámetros al Constructor Padre
Resolución de Errores en Herencia de Clases Abstractas
Manejo de Errores en Eclipse
- Se ha solucionado el primer error relacionado con la invocación del constructor de la clase padre.
- El segundo error se debe a que al heredar una clase abstracta, es necesario implementar los métodos abstractos definidos en ella.
Implementación del Método Abstracto
- Se crea el método
DameDescripciónen la claseEmpleado, especificando que devolverá un dato de tipoString.
- La implementación del método incluye concatenar información sobre el empleado, como su ID y sueldo.
Sobreescritura del Método
- Al implementar el método, Eclipse indica que se está sobrescribiendo correctamente el método
DameDescripciónde la superclasePersona.
- Con esto, se elimina el error anterior y se cumplen todos los requisitos para la clase
Empleado.
Creación de la Clase Alumno
- Se inicia la creación de la clase
Alumno, heredando también de la clasePersona.
- En el constructor de
Alumno, se reciben dos parámetros: nombre y carrera.
Inicialización y Encapsulación
- Es fundamental llamar al constructor de la clase padre desde el constructor del alumno para inicializar correctamente las instancias.
- Se define una variable privada para almacenar la carrera del alumno, asegurando así encapsulación adecuada.
Finalización e Implementación Adicional
- Cada instancia creada llamará al constructor correspondiente, pasando los parámetros necesarios.
- Para cumplir con las reglas de herencia, también es necesario sobrescribir el método
DameDescripciónen esta nueva clase.
Implementación de Clases en Java
Métodos y Descripciones de Clases
- Se discute la diferencia entre el método
Dame descripciónen las clasesAlumnoyEmpleado, indicando que cada uno debe tener su propia implementación debido a sus características distintas.
Creación de Instancias
- Se procede a probar el funcionamiento de las clases creando instancias dentro del método
Main, almacenándolas en un array para verificar sus propiedades.
Declaración y Asignación del Array
- Se declara un array de tipo
Persona, recordando que esta es una clase abstracta, y se inicializa con dos elementos para simplificar el ejemplo.
Inicialización de Objetos
- La primera posición del array se asigna a una nueva instancia de
Empleado 2, pasando cinco parámetros al constructor: nombre, sueldo, año, mes y día.
- El objeto empleado se crea con el nombre "Luis Conde" y un sueldo específico, mostrando cómo los atributos son gestionados por el constructor.
Uso de Herencia
- En la segunda posición del array se crea una instancia de
Alumno, destacando que tantoEmpleadocomoAlumnoheredan de la clase abstractaPersona.
Constructor del Alumno
- El constructor para la clase
Alumnorequiere dos argumentos: nombre y carrera. En este caso, se asignan "Ana López" como nombre y "Biológicas" como carrera.
Impresión de Información
- Para mostrar los datos almacenados en el array, se utiliza un bucle for mejorado que recorre las instancias e imprime tanto el nombre como la descripción.
Sintaxis del Bucle For en Java
- Se explica cómo implementar un bucle for en Java para recorrer arrays, mencionando que no existe una sintaxis directa como en otros lenguajes (ej. Python).
Llamada a Métodos desde Objetos
- Al imprimir información sobre cada objeto, se accede al método
Dame nombredesde la variable tipo persona (p) utilizando notación punto.
Método Abstracto y Polimorfismo
- Se aclara que aunque el método
Dame descripciónestá definido como abstracto en la clase padre (Persona), las subclases (Empleado 2yAlumno) implementan este método con su propia lógica.
Resultados Finales
¿Qué son las clases abstractas?
Introducción a las Clases Abstractas
- Se discute la importancia de comprender las clases abstractas en programación, destacando que el conocimiento previo es fundamental para avanzar en el aprendizaje.
- Una clase abstracta se define como aquella que establece un diseño dentro de la jerarquía de herencia, lo cual es crucial para la organización del código.
- En Eclipse, una clase se marca como abstracta con una "A", indicando que debe ser implementada por todas las clases que hereden de ella. Esto asegura consistencia en la implementación de métodos.
Resumen y Conclusiones