La herencia es el mecanismo que sirve de soporte para registrar y utilizar las relaciones conceptuales existentes entre las clases. Posibilita la definición de una clase a partir de otra organizando las clases en una estructura jerárquica formando jerarquias de clases.
La idea de la herencia es permitir la creación de nuevas clases basadas en clases existentes. Cuando heredamos de una clase existente, heredamos métodos y campos y agregamos nuevos campos y métodos para cumplir con la nueva situación.
La clase Hija hereda de la clase Padre sus atributos y métodos. A la vez, la clase Hija puede incluir adaptaciones como nuevos atributos, métodos y redefinirlos. Lo mismo pasa con las clases "Nieta" que herendan a su vez los métodos y atributos de la clase Hija.
Para indicar que una clase deriva de otra, heredando sus métodos y atributos, se usa el término extends.
public class Hija1 extends Padre { int c; Hija1 () { a=0; // Herencia de Padre b=0; // Herencia de Padre c=0; // Nuevo atributo } }
Para controlar el acceso desde otras clases y para controlar la herencia por las subclases, los atributos y métodos de las clases tienen tres modificadores para controlar el acceso:
http://www.arrakis.es/~abelp/ApuntesJava/Herencia.htm
http://dis.um.es/~bmoros/privado/apuntes/Curso09-10/POO3-Java-0910.pdf
http://profesores.elo.utfsm.cl/~agv/elo330/2s04/lectures/JAVA/Herencia_en_Java.html