Curso Java. Herencia I. Vídeo 40

Curso Java. Herencia I. Vídeo 40

Introducción a la Herencia en Programación Orientada a Objetos

Concepto de Herencia

  • La herencia es una característica fundamental de la programación orientada a objetos, considerada como una de las más potentes.
  • Se asocia con un concepto de la vida real, donde se trasladan relaciones familiares al ámbito de la programación.

Analogía Familiar

  • En el mundo real, una familia típica incluye abuelos, padres e hijos, donde los bienes se transmiten entre generaciones.
  • Por ejemplo, un abuelo puede tener una casa que eventualmente heredarán sus hijos y luego sus nietos.
  • Los padres también pueden poseer bienes (como coches), que seguirán el mismo patrón de herencia hacia los hijos.

Reutilización del Código

  • La herencia en programación permite reutilizar código existente para crear nuevas clases basadas en clases ya definidas.
  • Se menciona la creación previa de una clase "coche", que tiene características específicas como ruedas y dimensiones.

Creación de Nuevas Clases

  • Al necesitar crear otra clase (por ejemplo, "furgoneta"), se puede utilizar la clase "coche" como base para definir características adicionales o diferentes.

¿Cómo se diferencia una furgoneta de un coche?

Características Comunes y Diferencias

  • Una furgoneta comparte muchas características con un coche, como el número de ruedas, pero tiene propiedades únicas que la distinguen.
  • Ambas pueden tener dimensiones similares (largo y ancho), e incluso motores iguales, pero su uso y diseño son diferentes.
  • La furgoneta puede ofrecer características adicionales como capacidad de carga y más asientos, lo que no es típico en un coche convencional.
  • Un coche está diseñado principalmente para transportar personas, mientras que una furgoneta puede albergar tanto personas como carga adicional.
  • Las furgonetas pueden acomodar a más de cinco personas, lo cual es una característica distintiva frente a los coches.

Concepto de Herencia en Programación

  • La herencia en programación se compara con las diferencias entre coches y furgonetas; cada tipo tiene sus propias características específicas.
  • Al crear una clase para la furgoneta, se puede reutilizar el código existente de la clase coche para evitar redundancias.
  • Al heredar de la clase coche, la clase furgoneta obtiene automáticamente todas las propiedades y métodos comunes sin necesidad de reprogramarlos.
  • La herencia permite ahorrar tiempo en programación al reutilizar código previamente escrito, facilitando el desarrollo eficiente.
  • Además de las propiedades, los métodos también son heredados por la nueva clase; esto incluye funcionalidades como determinar si hay aire acondicionado o asientos de cuero.

Implementación Práctica

  • Se propone crear una nueva clase "furgoneta" que herede las características básicas definidas en la clase "coche".
  • En Eclipse se revisará la estructura previa de la clase coche para asegurar que se mantengan las variables encapsuladas adecuadamente.
  • Se recordará cómo se definieron los métodos getter y setter en la clase coche para gestionar sus atributos correctamente.

Creación de Clases en Programación Orientada a Objetos

Definición de la Clase Coche

  • Se establece un método para gestionar el peso del coche mediante setter y getter, permitiendo establecer y recuperar el peso total.
  • La clase furgoneta hereda las características de la clase coche, pero también incluye métodos específicos para definir su capacidad de carga y número de plazas.

Herencia en Programación

  • La herencia permite que una subclase (furgoneta) adquiera propiedades y métodos de una superclase (coche), además de sus propias características.
  • Se crea la nueva clase furgoneta en Eclipse, que no tendrá un método Main, manteniendo su relación con la clase coche.

Implementación de Herencia

  • En Java, se utiliza la palabra reservada extends para indicar que una clase hereda de otra. En este caso, furgoneta extiende coche.
  • Al usar extends, coche se convierte en superclase y furgoneta en subclase dentro de una jerarquía similar a un árbol genealógico.

Conceptos Clave sobre Jerarquías

  • La superclase (coche) está en la parte superior del árbol genealógico mientras que la subclase (furgoneta) está por debajo; esto refleja cómo se estructuran las relaciones entre clases.
  • Los términos "superclase" y "subclase" son comunes en programación; algunos prefieren "padre" e "hijo" para describir estas relaciones.

Limitaciones de Herencia Múltiple

  • A diferencia del mundo real donde se puede heredar de múltiples fuentes, Java no admite herencia múltiple debido a su complejidad.
  • Intentar implementar herencia múltiple generaría errores; Java optó por evitar esta confusión al simplificar el modelo con interfaces.

Alternativas a la Herencia Múltiple

  • Aunque Java carece de herencia múltiple, se introdujeron interfaces como solución para mantener flexibilidad sin complicar el sistema.
  • La decisión fue motivada por los problemas potenciales que surgirían al manejar múltiples niveles de herencias complejas entre muchas clases diferentes.

Características Específicas de Furgonetas

  • La clase furgoneta tiene atributos únicos como capacidad de carga y número adicional de plazas que no están presentes en la clase coche.

Creación de un Constructor para la Clase Furgoneta

Definición de Variables en la Clase Furgoneta

  • Se introduce una variable privada int capacidadExtra para almacenar la capacidad adicional del objeto furgoneta.
  • Se define otra variable privada int plazasExtra que almacenará el número de personas que pueden viajar en la furgoneta.

Estado Inicial del Objeto Furgoneta

  • Se discute que el estado inicial de una furgoneta, con capacidad y plazas extra, no es igual al estado inicial de un coche.
  • Es necesario construir un constructor específico para la clase furgoneta que asigne valores a las nuevas variables.

Implementación del Constructor

  • El constructor recibirá parámetros: plazasExtra y capacidadCarga, donde este último se considera más identificativo.
  • La construcción del constructor se inicia con la apertura y cierre de llaves, estableciendo su estructura básica.

Llamada al Constructor Padre

  • Dentro del constructor, se utiliza la palabra reservada super() para llamar al constructor de la clase padre (coche).
  • Al crear un objeto tipo furgoneta, se pasan los parámetros necesarios al constructor padre para establecer su estado inicial.

Asignación de Valores a las Nuevas Variables

  • Después de llamar al constructor padre, se asignan valores a las variables plazasExtra y capacidadCarga.
  • Se utiliza el operador this para diferenciar entre las variables de clase y los argumentos recibidos por el método.

Finalización del Constructor

Video description

En este vídeo comenzamos a explicar una de las características más importantes de la POO: La Herencia. Para más cursos, manuales y ejercicios, visita http://www.pildorasinformaticas.com