ABSTRACT en Java ☕ CLASES abstractas 💭
¿Qué son las clases abstractas y su relación con la herencia?
Introducción a las Clases Abstractas
- En este video se aborda el concepto de herencia en programación, introduciendo la palabra clave "abstract" que se relaciona con las clases abstractas.
- Se menciona una concesionaria que admite una lista de vehículos, permitiendo agregar diferentes tipos como autos, motos y potencialmente otros vehículos en el futuro.
Ejemplos de Vehículos
- Se discute cómo hasta ahora solo se han trabajado ejemplos concretos como autos y motos, pero también se pueden incluir otros tipos de vehículos como aviones o camiones.
- La dificultad radica en conceptualizar un "vehículo" más allá de los ejemplos conocidos; se plantea si es posible dibujar un vehículo genérico.
Concepto Abstracto de Vehículo
- Se establece que un vehículo es una concepción general y abstracta, no algo concreto que se use cotidianamente para referirse a un objeto específico.
- La importancia del término "abstracto" es fundamental para entender cómo generalizamos características comunes entre diferentes tipos de vehículos.
Implementación en UML
- Para representar la clase "Vehículo" como abstracta en UML, se debe colocar el nombre de la clase en cursiva.
- Se explica cómo usar herramientas como umletino para ilustrar gráficamente esta transformación a clase abstracta.
Cambios en el Código
- Al modificar la clase "Vehículo" para que sea abstracta, se utiliza la palabra clave "abstract" antes de "class", lo cual impide instanciar objetos directamente de esta clase.
- A pesar de ser abstracta, el constructor sigue siendo relevante ya que las subclases necesitan construir sus instancias basándose en él.
- El cambio a una clase abstracta asegura que no existan instancias directas del tipo "Vehículo", promoviendo así una jerarquía más clara donde solo existen subclases concretas.
¿Cómo se utilizan las clases abstractas en programación?
Conceptos de Clases Abstractas y Parámetros
- Se discute la idea de que un parámetro puede no ser un vehículo concreto, sino una subclase como auto o moto. Esto justifica la existencia de clases abstractas en programación.
- Se aclara que declarar una variable como tipo vehículo no implica que sea un objeto de esa clase, sino que puede referirse a instancias concretas como autos.
- La importancia de evitar objetos del tipo vehículo se menciona para prevenir inconsistencias en el programa, destacando cómo esto afecta el diseño del software.
Jerarquías de Clases
- Se explica que no todas las superclases deben ser abstractas; por ejemplo, "object" es una clase concreta y se puede instanciar directamente.
- Se enfatiza la normalidad de encontrar jerarquías con múltiples niveles donde algunas clases son abstractas y otras concretas, sugiriendo la necesidad de un diseño cuidadoso del modelo del programa.