Curso Java. Herencia II. Vídeo 41
Introducción a la Herencia en Java
Continuación del Ejemplo de Herencia
- El presentador da la bienvenida y menciona que se continuará con el ejemplo de herencia en Java, que quedó pendiente en el video anterior.
- Se recuerda que se creó una clase
Furgonetaque hereda de la claseCoche, lo cual permite reutilizar código y simplificar la programación.
- Se explica el uso de la palabra clave
superen el constructor para llamar al constructor de la superclase (Coche) y establecer valores iniciales como capacidad de carga y plazas extra.
Creación del Método Getter
- Se introduce un método getter en la clase
Furgonetapara devolver información sobre su capacidad de carga y plazas extra.
- El método se denomina
dimeDatosFurgoneta, y se establece que debe devolver un string con los datos relevantes utilizando las variables correspondientes.
Finalización de la Clase Furgoneta
- Se concluye que el método getter proporcionará información específica sobre las características adicionales de la furgoneta, además de los métodos heredados.
- La clase
Furgonetaahora tiene un estado inicial definido por su constructor, así como sus propias características específicas.
Uso Práctico de Clases en Java
Integración con Clase Principal
- Se menciona que se utilizará una clase principal llamada
UsoVehículo, donde se crearán instancias tanto para coches como para furgonetas.
- El presentador abre esta clase principal, recordando que contiene el método
main.
Renombrar Clase para Claridad
- Para evitar confusiones, se decide renombrar la clase
UsoCocheaUsoVehículo, lo cual es más apropiado dado que incluirá diferentes tipos de vehículos.
- Se explica cómo renombrar una clase en Eclipse usando la opción "Refactor" para cambiar el nombre del archivo y asegurarse de que coincida con el nombre de la clase.
Limpieza del Código
- Al eliminar código innecesario, Eclipse muestra advertencias sobre importaciones no utilizadas, lo cual es normal cuando se limpia el proyecto.
- El presentador elimina directivas import no necesarias antes de proceder a crear nuevas instancias.
Creación e Instanciación
Creando Instancias
- En el método
main, comienza creando una instancia perteneciente a la claseCoche.
Estableciendo Color y Creando Objetos en Java
Uso del Método Setter para Establecer Color
- Se introduce el método setter
estableceColorde la claseCoche, que permite asignar un color a un objeto de tipo coche.
- Al abrir el archivo
coche.java, se localiza el método que recibe un parámetro de tipo String para establecer el color del coche.
Creación de una Instancia de Furgoneta
- Se crea un objeto llamado
miFurgoneta1utilizando la claseFurgoneta, recordando que su constructor requiere dos parámetros: plazas extra y capacidad de carga.
- El constructor es invocado con los valores 7 (plazas) y 580 (capacidad de carga), creando así la instancia correctamente.
Estado Inicial de los Objetos
- Ambos objetos,
miCoche1ymiFurgoneta1, son inicializados con propiedades como número de ruedas, peso, ancho y largo, definidos en sus respectivos constructores.
Herencia en Acción
- Se demuestra cómo se puede establecer el color de la furgoneta usando el método heredado
estableceColordesde la clase padreCoche.
- Eclipse muestra todos los métodos disponibles al usar el punto después del nombre del objeto, evidenciando la herencia.
Configuración Adicional para Furgonetas
- Además del color, se configuran características adicionales como asientos de cuero y climatizador utilizando métodos heredados.
- La reutilización del código a través de herencia permite utilizar métodos sin necesidad de reprogramarlos en la clase hija.
Visualización en Consola
- Para verificar las propiedades establecidas, se utiliza
System.out.printlnpara mostrar información sobre ambos objetos.
Introducción a la Herencia en Programación Orientada a Objetos
Conceptos Básicos de Herencia
- Se menciona el uso de un método para concatenar el color del coche con su nombre, destacando la importancia de separar las instrucciones para evitar confusiones.
- La furgoneta, como objeto, hereda características del coche, incluyendo propiedades como el número de ruedas y dimensiones iniciales.
Ejecución y Métodos
- Al ejecutar una instrucción para mostrar los datos generales de la furgoneta, se observa que se presentan todos los métodos heredados del objeto coche.
- Se confirma que al llamar al método "dame datos", se obtienen correctamente los datos generales de la furgoneta.
Datos Específicos y Métodos Propios
- Se propone extender la funcionalidad mostrando no solo los datos generales sino también específicos como capacidad de carga y plazas extra.
- Se utiliza un método propio "dime datos furgoneta" para obtener información específica sobre la furgoneta, demostrando cómo se combinan métodos heredados y propios.
Limitaciones en el Diseño Actual
- Al intentar acceder a métodos específicos desde un objeto coche, se evidencia que ciertos métodos son exclusivos de la clase furgoneta.
- Se plantea una analogía familiar sobre herencia en programación orientada a objetos, donde cada subclase puede tener sus propios métodos además de los heredados.
Reglas para Diseñar Herencia
- Surge una pregunta clave sobre cómo diseñar adecuadamente la herencia entre clases. La regla fundamental es aplicar el término "es un".
- El diseño actual muestra que una furgoneta no es simplemente un tipo de coche; esto indica que hay fallas en el diseño actual entre las clases.
Propuesta para Mejorar el Diseño
- Para mejorar el diseño, se sugiere crear una clase principal llamada "vehículo" que contenga propiedades comunes a todos los vehículos.
Diseño de Clases en Programación Orientada a Objetos
Herencia de la Clase Vehículo
- Se propone programar características dentro de la clase
Vehículo, y luego crear clases específicas comoCocheyFurgonetaque heredan de esta clase base.
- La relación "es un" se aplica correctamente: un coche, una furgoneta, un camión y una moto son todos vehículos. Este diseño permite una mejor organización del código.
Mejora del Diseño
- El diseño podría haber sido más eficiente si se hubiera considerado cuántos objetos serían necesarios desde el principio, sugiriendo la creación de cuatro clases en lugar de tres.
- Cada clase específica (como
CocheoFurgoneta) debe heredar características generales de la claseVehículo, como color, peso y motor.
Clarificación sobre Herencia Múltiple
- Se aclara que no hay herencia múltiple en este contexto; cada subclase solo hereda de una única clase padre (
Vehículo).