Está en la página 1de 32

Herencia

Herencia

 La herencia es parte fundamental de la programación orientada al


objeto.
 Mediante herencia se puede crear una clase superior general, la que
puede ser heredad por otras clases más específicas, donde cada una
añade sus propias funcionalidades.
 La clase superior se denomina superclass.
 La clase inferior se denomina subclass.
Herencia

 La herencia se realiza mediante la sentencia extends.

class subclass-name extends superclass-name {


// body of class
Herencia

Contents of superOb:
i and j: 10 20
Contents of subOb:
i and j: 7 8
k: 9
Sum of i, j and k in subOb:
i+j+k: 24
Herencia

 Las clases superiores o inferiores se pueden utilizar como siempre.


 No hay restricciones para la herencia, una superclass puede tener dos
subclass, y una subclass puede ser superclass de otra, creando así una
jerarquía de herencia.
 La única restricción en Java, es que una sublcass puede tener sólo una
superclass.
Acceso

 A pesar de que una subclass hereda todos los miembros de la superclass,


no puede accederlos en caso de que sean declarados como private.
Acceso
Ejemplo
Ejemplo
Ejemplo

Volume of mybox1 is 3000.0


Weight of mybox1 is 34.3
Volume of mybox2 is 24.0
Weight of mybox2 is 0.076
Ejemplo
Referencias

 Una ventaja de Java, es que una referencia de una clase, puede


referenciar cualquier subclase, pero no puede acceder todos sus
miembros.
super

 super se utiliza para acceder al constructor de la superclass, eliminando


código duplicado y la necesidad de acceder a miembros privados.
super(arg-list);
 super siempre debe ser la primera línea ejecutada dentro del constructor.
super

 super también se puede utilizar como this, pero en referencia a la


superclass.

super.member
super

i in superclass: 1
i in subclass: 2
Orden de los constructores

 En una jerarquía de clases, los constructores se ejecutan desde la


superclase a la subclase.
 Si no se incluye super(), se ejecuta de igual forma el constructor sin
argumento primero.
Orden de los constructores
Orden de los constructores

Inside A's constructor


Inside B's constructor
Inside C's constructor
Override

 Cuando una subclass define un método con el mismo nombre y firma


(lista de argumentos) de una superclass, se dice que el método realiza un
override del método de la superclass.
 Cuando se utiliza un método override de una subclass se utiliza esta
versión, mientras que la versión de la superclass se oculta.
 La versión del método a ejecutar depende del tipo de objeto creado, es
decir, de la instancia y no del tipo de referencia.
Override
Override

k: 3
Override

 En el caso de que se quiera llamar la versión de la superclass dentro del


método redefinido se utiliza super.

i and j: 1 2
k: 3
Override

 Si se redefine un método con el mismo nombre, pero con otra firma el


método sencillamente se sobrecarga.
Override

This is k: 3
i and j: 1 2
Clases abstractas

 Existen situaciones en las cuales se necesita definir una forma abstracta


de una clase, sin proveer una implementación.
 Sin embargo, es obligatorio que las subclass implementen estos métodos.
 Esto se declara mediante la sentencia abstract.

abstract type name(parameter-list);

 Notar que no hay un cuerpo del método.


Clases abstractas

 Si una clase tiene algún método abstracto, la clase también debe


declararse así mediante la sentencia abstract frente a class.
 No se pueden crear instancias de una clase abstracta ya que hay partes
sin implementar.
 No se pueden declarar constructores o métodos estáticos como
abstractos.
Clases abstractas
final

 final tiene 3 usos:


 Definir una constante.
 Evitar el override de un método.
 Evitar que una clase sea heredada.
final

 Si final se usa frente a una variable, ésta sólo puede ser inicializada una
sola vez.
 Si se le asignan valores más de 1 vez, tenemos un error de compilación.
final
final
La clase objeto

 Todo objeto en Java es una clase


heredada de Object.
 Una referencia del tipo Object, puede
apuntar a una instancia de cualquier
clase de objeto.
 Object tiene definido ciertos métodos.

También podría gustarte