Vous êtes sur la page 1sur 10

Clases y herencia

FJP Unidad 8

Diseo de clases
Encapsulamiento
El encapsulamiento provee proteccin de atributos y
mtodos definidos en una clase de forma tal que
comportamiento de objetos de una clase sea
predecible.

Herencia
La herencia aumenta la flexibilidad en el diseo de
clases a travs de la creacin de clases generales a
partir de las cuales otras clases pueden derivar
comportamiento y atributos.
Academia Local Cisco UTN Facultad Regional Santa Fe http://www.santafecna.org.ar

Jerarqua de clases
Terminologa: superclases y subclases

HERENCIA Una subclase hereda todos los atributos y


mtodos no privados de la superclase
Dichos mtodos o atributos pueden
ser referenciados como miembros
normales de la clase.

Superclase

Palabras claves: extends


super, this
abstract
interface
implements

Subclase

En Java, todas las clases heredan de la clase Object


No obstante todas las clases de mayor nivel definidas por el usuario heredan
de Object, no es necesaria la palabra clave extends en su definicin.
Academia Local Cisco UTN Facultad Regional Santa Fe http://www.santafecna.org.ar

Jerarqua de clases ((cont.)


cont.)
Empleado
-------------------------nombre
salario
reaTrabajo
....

---------------------------

Las clases Gerente y Programador


heredan todos los atributos y
mtodos no privados de la clase
Empleado

mtodosEmpleado

Gerente es un
Empleado

Programador es un
Empleado

Gerente

Programador

--------------------------

--------------------------

nroEmpleados
nroFax
....

lenguaje
modulosACargo
....

---------------------------

---------------------------

mtodosGerente

mtodosProgramador

Programador extends Empleado


Gerente

extends Empleado

Academia Local Cisco UTN Facultad Regional Santa Fe http://www.santafecna.org.ar

Rol de los modificadores de


acceso en la herencia
Las subclases heredan los modificadores de acceso
aplicados a atributos y mtodos de la clase padre.
default

Paquete 1

Paquete 2

Los atributos y mtodos privados no se heredan.


Academia Local Cisco UTN Facultad Regional Santa Fe http://www.santafecna.org.ar

Sobreescritura de mtodos
La sobreescritura (overriding) de mtodos es la
redefinicin o customizacin de mtodos heredados de la
superclase.
Cualquier mtodo heredado puede ser sobreescrito, excepto los que
fueron declarados como final.
Reglas para la sobreescritura de mtodos:
la lista de argumentos (tipos, orden y cantidad) y el tipo de retorno
deben ser idnticos
los modificadores de acceso no pueden ser ms restrictivos que los
del mtodo heredado.
las excepciones arrojadas deben ser de la misma clase o subclase
que las del mtodo heredado.
Academia Local Cisco UTN Facultad Regional Santa Fe http://www.santafecna.org.ar

this y super
public class SportsCoupe extends AutoModeloBase
protected String accessories = cd-car";
public String getAccessories() //overridden method
{
return super.getAccessories() + accessories;
}
public String getAccessories(String options) //overloaded
method
{
return this.getAccessories() + options;
}
....
}

Academia Local Cisco UTN Facultad Regional Santa Fe http://www.santafecna.org.ar

Constructores y Herencia
Una subclase no hereda los constructores de la
superclase.
La primer sentencia en el cuerpo del constructor para una
subclase debera invocar al constructor de la superclase.
class Parent
{
String name;

class Child extends Parent


{
Child() //Contructor
{

Parent (String s)
{

super(nombre);

name = s;

...otras sentencias

}
...

}
...

}
}

Academia Local Cisco UTN Facultad Regional Santa Fe http://www.santafecna.org.ar

Abstraccin
Cuando una clase de alto nivel en la jerarqua de
clases sirve como framework o gua para la
definicin de otras clases, la misma es declarada
abstracta
No est pensada para la creacin de objetos
Es utilizada para definir lmites en la definicin de otras
subclases
Framework comn para un conjunto de subclases relacionadas

Academia Local Cisco UTN Facultad Regional Santa Fe http://www.santafecna.org.ar

Mtodos abstractos
Un mtodo abstracto se define en Java a travs de
la palabra clave abstract
No posee cuerpo
Se define mediante una sentencia de signatura de mtodo

Sintaxis:
<modificadores> abstract <tipo_retorno>
nombre_metodo (argumentos);

Academia Local Cisco UTN Facultad Regional Santa Fe http://www.santafecna.org.ar

Clases abstractas
Es posible declarar clases abstractas que no
contengan mtodos abstractos
Una subclase de una superclase abstracta debe
ser declarada abstracta si no provee definiciones
para todos los mtodos abstractos de la
superclase
Sintaxis:
<modificadores> abstract class Nombre_Clase{};

Clases abstractas vs. clases concretas


Academia Local Cisco UTN Facultad Regional Santa Fe http://www.santafecna.org.ar

Interfases
Las interfases son clases abstractas que definen
mtodos abstractos y constantes.
El propsito de una interfase es servir como un
documento de diseo para las caractersticas
externas de una clase
Todos los mtodos en una interfase deben ser
pblicos

Academia Local Cisco UTN Facultad Regional Santa Fe http://www.santafecna.org.ar

Interfases ((cont.)
cont.)
Proveen un mecanismo a travs del cual una
subclase define comportamiento
La declaracin de una interfase es vista como un contrato
entre la clase que implementa la interfase y la interfase en
s.
El compilador fuerza el cumplimiento de dicho contrato
asegurndose que todos los mtodos declarados en la
interfase sean implementados en la clase
En algunos casos, puede ser requerida la implementacin
nula de un mtodo (mtodo sin cdigo procedural)
Academia Local Cisco UTN Facultad Regional Santa Fe http://www.santafecna.org.ar

Interfases ((cont.)
cont.)
Una interfase slo puede contener mtodos
abstractos y atributos constantes.
Una clase puede implementar ms de una
interfase y una interfase puede ser implementada
por clases no relacionadas.
Una clase debe definir todos los mtodos de la
interfase que la misma implementa
De lo contrario, debe ser declarada abstracta
Academia Local Cisco UTN Facultad Regional Santa Fe http://www.santafecna.org.ar

Ej.: definicin de interfase


La clase SeguirGua implementa la Interfase Gua
<interfase>

SeguirGuia

Gua

public interface Guia{


public void seguirReglas();
}
public class SeguirGuia implements Guia{
void seguirReglas() { }
}
Academia Local Cisco UTN Facultad Regional Santa Fe http://www.santafecna.org.ar

Polimorfismo
Provee flexibilidad en la utilizacin de un tipo de
clase general en definiciones e invocaciones de
mtodos
Posibilita que el mismo cdigo posea efectos
diferentes en tiempo de ejecucin dependiendo del
contexto
JVM utiliza invocacin de mtodos virtuales y
binding dinmico para resolver el objeto actual y su
correspondiente implementacin de mtodos
durante el tiempo de ejecucin
Academia Local Cisco UTN Facultad Regional Santa Fe http://www.santafecna.org.ar

Binding dinmico de
mtodos
Tcnica de resolucin del comportamiento de un
objeto en tiempo de ejecucin
Sinnimo: invocacin de mtodos virtuales

Resuelve qu mtodo invocar en tiempo de


ejecucin cuando ms de una clase en una
jerarqua de herencia implementa el mtodo
JVM decide en base al tipo de objeto sobre el cual la
invocacin es realizada

Academia Local Cisco UTN Facultad Regional Santa Fe http://www.santafecna.org.ar

Ej
Ej:: Polimorfismo
Empleado
public class Escuela
{
public String display(Empleado e)
Profesor

{
System.out.println("La informacin del
empleado es: ");
System.out.println(e.getDetails());
}

Tanto Empleado como Profesor poseen


su propio mtodo getDetails()
Academia Local Cisco UTN Facultad Regional Santa Fe http://www.santafecna.org.ar

Ej
cont.)
Ej:: Polimorfismo ((cont.)
public static void main(String args [ ])
{
Empleado e1 = new Empleado();
Profesor t1 = new Profesor();
Empleado e2 = new Profesor();
School

s1 = new Escuela();

s1.display(t1);
s1.display(e1);
s1.display(e2);
}
Academia Local Cisco UTN Facultad Regional Santa Fe http://www.santafecna.org.ar

10

Vous aimerez peut-être aussi