Transcript superclase
FUNDAMENTALS OF THE JAVA
PROGRAMMING LANGUAGE
(SL-110)
CAPÍTULO 12: HERENCIA
Ing. Ronald Criollo
AGENDA
Herencia y Programación orientada a objetos.
Lenguaje JAVA soporta herencia
Modificadores de Acceso y Herencia
Sobreescritura
Uso de THIS y SUPER
Herencia y Constructores.
Extendiendo las Clases.
HERENCIA
Objetos son creados para modelar COSAS.
Las COSAS podrían ser diferentes, pero tienen
muchos atributos en común
Podemos crear un objeto que modele los
atributos en común
HERENCIA
ABSTRACCION
Una SUPERCLASE puede ser usada para modelar
los atributos comunes o comportamiento.
A veces, la SUPERCLASE no puede ser un Objeto
en si.
La SUPERCLASE puede definir el comportamiento
que las SUBCLASES deben implementar
SUPERCLASES Y SUBCLASES
MODELANDO SUPERCLASES Y SUBCLASES
MODELANDO SUPERCLASES Y SUBCLASES
PROBLEMA DE HERENCIA MULTIPLE
Algunos lenguajes permiten que una clase pueda
tener mutiples SUPERCLASES.
Herencia provee la relacion “ES UN”.
Multiple Herencia crea conflictos con los atributos y
comportamientos
PALABRAS CLAVES EN LA HERENCIA
extends: Declara que la actual clase es una
SUBCLASE de otra.
super: usada por la SUBCLASE para acceder a los
atributos o metodos de la SUPERCLASE.
protected: es un modificador de acceso que restringe
el acceso a las SUBCLASES.
abstract: declara que una clase es una INTERFACE
implements: permite a una clase tomar las
propiedades de una INTERFACE
ROL DE LOS MODIFICADORES DE ACCESO EN LA
HERENCIA
La subclase hereda todos los atributos y
comportamientos de la SUPERCLASE excepto los
declarados como privado.
ROL DE LOS MODIFICADORES DE ACCESO EN LA
HERENCIA
SOBRESCRITURA DE METODOS
SUBCLASE podria necesitar personalizar el
comportamiento de las SUPERCLASES.
La SUBCLASE define un metodo que ya existe en la
SUPERCLASE.
Cuando este metodo es llamado, es usado el que es
definido en la SUBCLASE.
El metodo de la SUPERCLASE es accesible desde la
SUBCLASE usando la palabra clave SUPER .
SOBRESCRITURA DE METODOS
SOBRECARGA VS SOBREESCRITURA
Sobreescritura es cuando un metodo en la SUBCLASE
es diseñado para reemplazar un metodo del mismo
nombre en la SUPERCLASE.
Sobrecarga es tener varios metodos con el mismo
nombre en la misma clase con distinta definición.
Sobreescritura
permite
personalizar
el
comportamiento.
Sobrecarga crea varias formas de hacer la misma
cosa.
MANEJO DE CONSTRUCTORES EN LA HERENCIA
Contructores pueden ser sobrecargados.
Cuando una SUBCLASE es construida, el constructor
de la SUPERCLASE tambien es llamado.
El constructor de la SUBCLASE puede llamar
explicitamente al constructor de la SUPERCLASE
usando la palabra clave SUPER.
Si no hay un constructor correspondiente en la
SUPERCLASE, la compilación FALLA.
DECLARANDO UNA SUBCLASE
Sintaxis
[class_modifier] class class_identifier extends superclass_identifier
Ejemplo
DECLARANDO UNA SUBCLASE
IMPORT
Sintaxis
import package_name.class_name;
import package_name.*
Ejemplo
USANDO NOMBRE COMPLETO
Sintaxis
package_name.class_name
Ejemplo
POLIMORFISMO
POLI = Multiple.
MORFISMO = Formas.
Implica que un mismo Objeto puede tomar diversas
formas.
Figura a = new Circulo();
Figura b = new Triangulo();
CLASES ABSTRACTAS
Son SUPERCLASES que modelan de una forma
mas generalizada los atributos y
comportamientos.
Las clases ABSTRACTAS definen metodos que
no tienen cuerpo pero que deben ser
sobreescritos.
Las clases ABSTRACTAS no saben como es el
comportamiento general de las SUBCLASES,
por eso fuerzan a crear en las SUBCLASES un
comportamiento con este nombre.
INTERFACES
Java impide el uso de Herencia Multiple.
Sin embargo, una clase puede heredar
atributos (STATIC y FINAL) y comportamientos
de multiples fuentes usando INTERFACES.
Las INTERFACES son como una plantilla para
el comportamiento pero no la definen, es por
eso que fuerzan a que las SUBCLASES las
definan
INTERFACES
CLASE, CLASE ABSTRACTA E INTERFAZ
CLASE, CLASE ABSTRACTA E INTERFAZ
En una clase, al definir Animal tendríamos que
implementar los métodos dibuja() e imprime(). Las clases
hijas no tendrían por qué implementar los métodos, a no
ser que quieran adaptarlos a sus propias necesidades.
En una clase abstracta podríamos implementar los
métodos que nos interese, dejando sin implementar los
demás (dejándolos como métodos abstractos). Dichos
métodos tendrían que implementarse en las clases hijas.
En un interfaz no podemos implementar ningún método en
la clase padre, y cada clase hija tiene que hacer sus
propias implementaciones de los métodos. Además, las
clases hija podrían implementar otros interfaces.
CLASES FINAL
Una clase FINAL se declara como la clase que
termina una cadena de herencia.
No se puede heredar de una clase final. Por
ejemplo, la clase Math es una clase final.
Se usa la palabra clave FINAL para declarar un
atributo INMUTABLE (CONSTANTE).
Tambien se usa la palabra clave FINAL para
impedir que un metodo sea sobreescrito en
una SUBCLASE.