Herencia es un concepto central en la programación orientada a objetos (OOP) y a menudo se considera uno de los pilares para aumentar la eficiencia. En este tutorial, profundizarás tu comprensión sobre la herencia en Java. Aprenderás cómo manejar modificadores de acceso, utilizar constructores y cuál es el papel del encapsulamiento en la herencia.
Principales hallazgos
- La herencia permite heredar propiedades y métodos de una clase.
- El modificador de acceso private restringe el acceso a las variables o métodos, mientras que protected permite un acceso ampliado dentro de las clases que heredan de la clase original.
- Los constructores deben ser llamados en la subclase para instanciar objetos correctamente.
- Los métodos de la interfaz se pueden utilizar de manera generalizada cuando se tienen varias clases específicas.
Guía paso a paso
Modificadores de acceso: protected vs. private
Si declaras una variable (por ejemplo, color) como protected en una clase como Vehiculo, entonces puedes utilizar esta variable directamente en una clase derivada (por ejemplo, Coche). Sin embargo, si declaras la variable como private, no podrás acceder a ella directamente en la subclase.

Esto significa concretamente que el acceso a variables private solo es posible a través de métodos setter y getter.
El ejemplo muestra que debemos usar setColor y getColor para acceder a la variable private color.

Si la variable se declara como protected, puedes acceder a ella fácilmente dentro de la clase Coche y cambiar el valor.
Uso de constructores en la herencia
Al definir una subclase, debes asegurarte de que el constructor de la superclase se llame correctamente.

Esto asegura que el color se inicialice correctamente al crear un objeto Coche.

Asegúrate de definir un constructor en la subclase que pase adecuadamente los parámetros de la superclase.
Herencia y llamadas a métodos
Dos clases, Vehiculo y Coche, te permiten usar variables y métodos generales. Si defines un método en Vehiculo, también puedes usar este método en Coche sin tener que reescribirlo.

Aquí se llama al método mostrarColorVehiculo y se imprime el valor del color que proporciona el método getColor.
Restricciones en el acceso a métodos
Si intentas llamar a un método en una subclase que no está disponible para la clase, recibirás un error de compilación. En nuestro ejemplo, se debe pasar un objeto Vehiculo para llamar al método getColor.

Esto significa, en la práctica, que debes asegurarte de que el método se ajuste a tu tipo de datos antes de llamarlo. Así, puedes pasar una bicicleta, un coche o ambos a un método que simplemente espera objetos de Vehiculo.
Ejemplo de llamada a métodos de instancia en contextos estáticos
Ten en cuenta que en métodos estáticos (static) no se puede usar la palabra clave this, ya que no se refiere a una instancia específica. En tales casos, es posible que debas utilizar otro método o reestructurar la lógica.

Este llamado imprimirá correctamente el color para el objeto miCoche.
Resumen - Herencia en Java: Una guía para principiantes
La herencia es un concepto importante en la programación con Java, que te ayuda a modularizar y reutilizar el código. En este tutorial has aprendido los fundamentos de modificadores de acceso, constructores y llamadas a métodos en relación con la herencia.
Preguntas frecuentes
¿Cómo puedo acceder a variables privadas en la subclase?No se puede acceder directamente a variables privadas en la subclase. Usa métodos getter y setter.
¿Cuál es la diferencia entre protected y private?protected permite el acceso en la subclase y en el mismo paquete, mientras que private solo es accesible dentro de su propia clase.
¿Debo definir los constructores en la subclase?Sí, si has modificado el constructor de la superclase, también debes definir los constructores en la subclase en consecuencia.
¿Puedo sobrescribir libremente métodos de superclases en subclases?Sí, puedes sobrescribir métodos que no están marcados como final o static en la subclase para implementar un comportamiento específico.