Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Herencia
Podemos definir la herencia como la capacidad de crear clases que adquieran de manera automtica los atributos y mtodos de otras clases que ya existen, pudiendo al mismo tiempo aadir atributos y mtodos propios.
17/10/2011
Ventajas de la Herencia
Entre las principales ventajas que ofrece la herencia en el desarrollo de aplicaciones estn: Reutilizacin de cdigo. En aquellos casos donde se necesite crear una clase que, adems de mtodos propios, debe incluir los mtodos definidos en otra, la herencia evita tener que reescribir todos esos mtodos en la nueva clase. Mantenimiento de Aplicaciones existentes. Utilizando la herencia, si tenemos una clase con una determinada funcionalidad y tenemos la necesidad de ampliar dicha funcionalidad, no necesitamos modificar la clase existente (la cual se puede seguir utilizando para el tipo de programa que fue diseada) sino que podemos crear una clase que herede a la primera, adquiriendo toda su funcionalidad y aadiendo la suya propia.
3
Nomenclatura y Reglas
En POO, a la clase que va a ser heredada se le llama superclase o clase base, mientras que a la que hereda se le conoce como subclase o clase derivada. Grficamente, la herencia entre dos clases se representa como una flecha saliendo de la subclase hacia la superclase.
17/10/2011
Diagrama UML
Clase Padre
Clase Hija
Reglas Bsicas
Hay unas reglas bsicas sobre la herencia en Java que hay que tener presentes En Java no esta permitido la herencia Mltiple, es decir, una subclase no puede heredar ms de una clase.
Si es posible la herencia multinivel, es decir, A puede ser Heredada por B y B puede ser heredada por C. Una clase puede ser heredada por varias clases.
17/10/2011
La Relacion es un
La herencia entre dos clases establece una relacin entre las mismas de tipo es un, lo que significa que un objeto de una subclase tambin es un objeto de la superclase. Por ejemplo, Vehculo es una superclase de Automvil, por lo que un automvil es un Vehculo. De la misma forma Animal es la superclase de Mamfero y esta a su vez superclase de Len, esto nos lleva a que Len es un Mamfero y es un animal.
17/10/2011
La Clase Object
Todas las clases de Java heredan alguna clase. En caso de que no se especifique mediante extends la clase que se va a heredar, implcitamente hereda de Object. Esta clase se encuentra en el paquete java.lang y proporciona el soporte bsico para cualquier clase Java. As pues, la definicin de una clase que no herede explcitamente a otra equivale a: public class NombreClase extends Object { // cdigo de la clase } La clase Object es, por tanto, la superclase de todas las clases de Java.
9
Hay que hacer especial mencin al comportamiento de los constructores de la superclase y subclase cuando se va a crear un objeto de esta ltima. Como norma universal, cada vez que en Java se crea un objeto de una clase, antes de ejecutarse el constructor de dicha clase se ejecutara primero el de su superclase. Segn esto, tras la ejecucin del mtodo main() del siguiente programa:
10
17/10/2011
Ejemplo de herencia
public class Primera { public Primera() { System.out.println(Constructor de la superclase); } } public class Segunda extends Primera { public Segunda() { System.out.println(Constructor de la subclase); } }
11
Ejemplo de herencia
public class Principal { public static void main(String args[]) { Segunda s = new Segunda(); } }
12
17/10/2011
Ejemplo de herencia
La explicacin a esta situacin la tenemos en el hecho de que el compilador java, aade, como primera lnea de cdigo en todos los constructores de una clase la siguiente instruccin: super(); Instruccin que provoca una llamada al constructor sin parmetros de la superclase. Los constructores por defecto tambin incluyen esta instruccin, as pues, el aspecto real de estos constructores es: public NombreClase(){ super(); }
13
Ejemplo de herencia
Si en vez de llamar al constructor sin parmetros quisiramos invocar a cualquier otro constructor de la superclase, deberamos hacerlo explcitamente, aadiendo como primera lnea del constructor de la subclase la instruccin: super(argumentos) Los argumentos son los parmetros que necesita el constructor de la superclase que se desea invocar. Esto permite entre otras cosas, que el constructor de la subclase pueda pasarle al constructor de la superclase los datos necesarios para la inicializacin de los atributos privados y que no son accesibles desde la subclase.
14
17/10/2011
Existe un modificador de acceso aplicable a atributos y mtodos de una clase, pensando para ser utilizado con la herencia. Se trata del modificador protected. Un miembro de una clase (atributo o mtodo) definido como protected ser accesible desde cualquier subclase de sta, independientemente de los paquetes en que estas clases se encuentren.
15
Clases Finales
Si queremos evitar que una clase sea heredada por otra, deber ser declarada con el modificador final delante de class public final class ClaseA { . } Si otra clase intenta heredar una clase final se producir un error de compilacin. Por ejemplo esta clase no compilar: public class ClaseB extends ClaseA { // cdigo de la ClaseB }
16
17/10/2011
Sobreescritura de Mtodos
Cuando una clase hereda de otra, el comportamiento de los mtodos que hereda no siempre se ajusta a las necesidades de la nueva clase. En estos casos, la subclase puede optar por volver a reescribir el mtodo heredado, es lo que se conoce como sobreescritura de un mtodo. A la hora de sobrescribir un mtodo hay que tener en cuenta las siguientes reglas:
17
Cuando se sobrescribe un mtodo en una subclase, ste debe tener exactamente el mismo formato que el mtodo de la superclase que sobrescribe. Esto significa que deben llamarse igual, tener los mismos parmetros y mismo tipo de devolucin. Hay que tener presente si al intentar sobrescribir un mtodo en una subclase se mantiene el mismo nombre y se modifican los parmetros, el nuevo mtodo no sobrescribe al de la superclase pero tampoco ocurre un error de compilacin, ya que estaramos en un caso de sobrecarga de mtodos: dos mtodos con el mismo nombre y distintos parmetros.
18
17/10/2011
El mtodo sobrescrito puede tener un modificador de acceso menos restrictivo que el de la superclase. Por ejemplo, el mtodo de la superclase puede ser protected y la versin sobrescrita en la subclase puede ser public, pero nunca uno ms restrictivo. Para llamar desde el interior de la subclase a la versin original del mtodo de la superclase, debe utilizarse la expresin: super.nombreMetodo(argumentos); Si no se utiliza super delante del nombre del mtodo, se llamar a la versin sobrescrita de la clase.
19
10