HERENCIA EN JAVA
La herencia es parte integral de Java (y de todos los lenguajes de programación orientados a objetos). Los usuarios de Java siempre utilizan herencia cuando crean sus clases, porque implícitamente cuando se crea cualquier clase en Java, esta hereda de la clase Object.
La Herencia es el mecanismo por el que se crean nuevos objetos definidos en términos de objetos ya existentes. Por ejemplo, si se tiene la clase Ave, se puede crear la subclase Pato, que es una especialización de Ave.
class Ave {
String color;
}
class Pato extends Ave {
int numero_de_patas;
}
La palabra reservada extends se usa para generar una subclase (especialización) de un objeto. Una Pato es una subclase de Ave. Cualquier cosa que contenga la definición de Ave será copiada a la clase Pato, además, en Pato se pueden definir sus propios métodos y variables de instancia. Se dice que Pato deriva o hereda de Ave.
La herencia sirve para la reutilización de código, otro ejemplo de esto es la clase Automóvil en la cual se pueden definir los métodos más comunes como lo son acelerar, frenar y transportar, sin embargo si se necesita una clase Patrulla que también es un tipo de Automóvil, si no existiera la herencia, entonces se tendrían que definir los métodos acelerar, frenar, transportar y además los métodos particulares de patrulla que serían prender sirena y apagar sirena, en ese sentido el programador estaría trabajando de más, pero como existe la herencia, esto conlleva a la facilidad de aprovechar los métodos ya definidos en Automóvil y poderlos utilizar en la clase Patrulla.
La representación con código del ejemplo anterior es:
class Automovil{
public void acelerar(){
System.out.println("el automovil está acelerando");
}
public void frenar(){
System.out.println("el automovil está frenando");
}
public void transportar(){
System.out.println("el automovil está tarnsportando");
}
}
class Patrulla extends Automovil{
public void prenderSirena(){
System.out.println("Sirena encendida");
}
public void apagarSirena(){
System.out.println("Sirena Apagada");
}
}