Herencia en Java.

Herencia en Java

En orientación a objetos la herencia es, después de la agregación o composición, el mecanismo más utilizado para alcanzar algunos de los objetivos más preciados en el desarrollo de software como lo son la reutilización y la extensibilidad

JERARQUIA

Los descendientes de una clase heredan todas las variables y métodos que sus ascendientes hayan especificado como heredables, además de crear los suyos propios

CARACTERÍSTICAS

La característica de herencia, nos permite definir nuevas clases derivadas de otra ya existente, que la especializan de alguna manera. Así logramos definir una jerarquía de clases, que se puede mostrar mediante un árbol de herencia. En todo lenguaje orientado a objetos existe una jerarquía, mediante la que las clases se relacionan en términos de herencia. En Java, el punto más alto de la jerarquía es la clase Object de la cual derivan todas las demás clases (paquete java.lang).

Tipos de Herencia

Herencia simple

Java incorpora un mecanismo de herencia simple. Es decir, una clase sólo puede tener una superclase directa de la cual hereda todos los datos y métodos. Puede existir una cadena de clases derivadas en que la clase A herede de B y B herede de C, pero no es posible escribir algo como:

class A extends B , C .... // error

Ejemplo:

class Padre():
 def __init__(self):
 self.x = 5;
 print("Este es el constructor de la clase padre")
 
 def metodo(self):
 print("Ejecutando método de clase padre")

Herencia Multiple

Un objeto puede extender las características de uno o más objetos, es decir, puede tener varios padres

Ejemplo:

class A { 
 public void algo() { 
System.out.println("A"); 
} 
} 
class B extends A { 
 public void algo() { 
super.algo(); 
System.out.println("B"); 
} 
public void hace() { 
 System.out.println("Hace"); 
} 
} 
class C extends A { 
 public void algo() { 
super.algo(); 
System.out.println("C"); 
} 
public void otro() { 
 System.out.println("Otro"); 
} 
} 
class D extends C, B { 
 public void algo() { 
 super.hace(); 
 super.otro(); 
System.out.println("D"); 
} 
}
https://www.google.es/url?
http://pitagoras.usach.cl/~eflores/lcc/cd_arq/Guia-Java/II_6.htm
http://www.arrakis.es/~abelp/ApuntesJava/Herencia2.htm
http://www.codejobs.biz/es/blog/2013/05/13/herencia-simple-y-multiple-en-python#sthash.PLA61bcl.dpbs