Herencia de Clases
En esta lección vamos a aprender a crear Clases heredadas. Este es un tema avanzado, pero vamos a verlo por encima para que conozcáis su existencia.
¿Qué es una Clase heredada?
Una Clase heredada no es más que una Clase que hereda de otra, y que al heredar, se constituye de todos los atributos y métodos de la misma.
Es decir, si heredamos nuestra Clase Coche a otra Clase (por ejemplo: Clase Coche_Carreras), esta nueva Clase tendrá todos las características de la Clase Coche, más los atributos o métodos que queramos añadir a esta nueva Clase.
Vamos con el ejemplo...Lo primero que hay que hacer, es añadir a la Clase Coche (la que ve a aser heredada), un constructor en blanco, de esta forma:
Lo añadimos arriba del otro constructor. Ahora esta Clase Coche tiene 2 constructores.
Este tema lo trataremos más adelante, en sobrecarga de métodos.y constructores.
Una vez hecho eso, ya se nos permitirá heredar dicha Clase.
Creemos la clase Coche_Carreras.
Como siempre, creamos un archivo Java Class con dicho nombre, y en el código nos quedaría asi:
Como véis en la imagen, hay que añadirle la palabra extends y luego el nombre de la Clase que queremos que herede, en este caso Coche.
Con eso conseguimos que la Clase Coche_Carreras herede de Coche.
Esta nueva Clase solo tiene un constructor, que paso a explicar ahora como funciona.
Por supuesto, también puede contener métodos nuevos, pero no lo vamos a hacer para no alargarlo tanto.
El constructor tiene 4 parámetros, los 3 mismos que tenía la Clase Coche más uno nuevo que he añadido, que es un String.
En el String "comp" se introduce la "competeción" en la cual participa el Coche de Carreras.
Es decir, que nuestra Clase Coche_Carreras, es idéntica a la Clase Coche + el atributo String de competición. (Cosa que no tiene la Clase Coche).
Ahora bien, a la hora de asignar valores..¿Por qué en algunos valores se escribe this. y en otros no?
Si te fijas el this. solo se pone cuando las variables que tengo que asignar TAMBIÉN pertenecen a la Clase Coche.
¿Por qué? Muy sencillo, porque esas variables también existen en la otra Clase, entonces hay que indicarle al programa CUAL es la variable que estoy asignando, si la de la Clase Coche, o la de la Clase Coche_Carreras.
En este caso, al ponerle this. estoy utilizando la variable de Coche_Carreras.
Por eso mismo, la variable "competicion" se utiliza tal cual.
Porque esa variable no existe en la Clase Coche, así que el programa ya sabe que al poner "competicion" se trata de la única variable que hay con ese nombre.
Para comprobar todo el tema de herencia de Clases. Vamos al archivo AulaFacil.java y creamos un Objeto de cada Clase:
Con esto tenemos un coche de cada tipo de Clase.
Para ver como funciona la herencia, podéis acceder a sus atributos y métodos para ver que son los mismos, solo con la diferencia de que el Coche_Carreras tendrá un atributo más (el de competición que le hemos añadido).
Accedemos al Coche así: c.
Y al Coche_Carreras así: car.
Como véis, este último es idéntico al otro, pero añadiendo el nuevo atributo: competicion.