Curso Java. Clases Abstractas II. Vídeo 46

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 clases Empleado y Alumno.

Creación de la Clase Principal

  • Se crea una nueva clase llamada UsoPersona, que contendrá el método main.
  • Se reutiliza el código existente de la clase Empleado para 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 clase Persona.
  • 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 Persona se 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 nombre en el constructor, asignando este valor a la variable de instancia nombre.
  • La clase Persona tendrá dos métodos: Dame nombre, que devuelve el nombre, y Dame descripción, que debe ser implementado por las clases que hereden de Persona.

Implementación del Método Dame Nombre

  • El método Dame nombre es 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ón se 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ón en la clase Empleado, especificando que devolverá un dato de tipo String.
  • 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ón de la superclase Persona.
  • 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 clase Persona.
  • 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ón en 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ón en las clases Alumno y Empleado, 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 tanto Empleado como Alumno heredan de la clase abstracta Persona.

Constructor del Alumno

  • El constructor para la clase Alumno requiere 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 nombre desde la variable tipo persona (p) utilizando notación punto.

Método Abstracto y Polimorfismo

  • Se aclara que aunque el método Dame descripción está definido como abstracto en la clase padre (Persona), las subclases (Empleado 2 y Alumno) 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

Video description

Terminamos de ver con un ejemplo práctico el tema de las clases abstractas en Java. Para más cursos, ejercicios y manuales visita: http://www.pildorasinformaticas.com