You are on page 1of 16

Interfaces

La unidad fundamental en Java es la clase,


pero la unidad fundamental en el diseo
orientado a objetos es el tipo. Aunque las
clases definen tipos, es muy til y potente
poder definir un tipo si definir una clase.
Las interfaces definen tipos de un modo
abstracto en forma de una coleccin de
mtodos o de otros tipos que conforman el
contrato del tipo definido.
Las clases implementan interfaces.

Las clases pueden implementar ms de


una interfaz, pero solo extender de una
sola clase.
Las declaraciones de interfaces crean
nombres de tipos, de la misma forma que
las clases. Se puede utilizar el nombre de
la interfaz como el nombre del tipo de la
variable, y cualquier objeto cuya clase
implemente esa interfaz se puede asignar
a esa variable.

Ejemplo de interfaz
Muchas interfaces simples definen una
propiedad que se puede adscribir a una
variedad de diferentes objetos de
diferentes clases. Estas propiedades se
definen a menudo en trminos de un
objeto es capaz de hacer algo. Por
ejemplo, en los paquetes estndar hay
diversas interfaces de capacidades
como:

Interfaces de Java

Cloneable

Comparable

Runnable
Serializable

Ejemplo de la interfaz Comparable

Puede ser implementada por cualquier


clase cuyos objetos se puedan comparar
entre si.

public interface Comparable


{
int compareTo(Object o);
}

Implementando la Interfaz

Consideremos la clase cuerpo celeste. La


ordenacin natural de los cuerpos
celestes que giran alrededor de un mismo
cuerpo se podra definir como su distancia
orbital a dicho cuerpo.

class Cuerpo implements Comparable


{ //se omiten los campos del cuerpo
int distanciaOrbital = ;
public int compareTo(Object o) throws IllegalArgumentException
{
Cuerpo otro = (Cuerpo) o;
if(orbita == otro.orbita)
return distanciaOrbital otro.distanciaOrbital;
else
throw new IllegalArgumentException(Orbita erronea)

}
}

Las interfaces producen nombres de tipos


de la misma forma que las clases, por lo
que se pueden declarar variables de esos
tipos. Por ejemplo:
Comparable obj;

Una buena parte de la potencia de las


interfaces radica en la declaracin y
utilizacin de variables de tipo interfaz en
vez de variables del tipo de alguna clase
especfica.

Ej: rutina ordenar genrica que ordene un


array de objetos Comparable (suponiendo
que los objetos sean compatibles), sin que
importe la clase real de los objetos.

class Ordenador implements Comparable


{
public static Comparable[] ordenar(Comparable[] lista)
{
// detalles de implementacin
return lista;
}
}

Las referencias a tipos de interfaz, slo se


pueden utilizar para acceder a los miembros
de la interfaz. Por ejemplo, el siguiente cdigo
da error de compilacin:

Comparable obj = new Cuerpo();


String nombre = obj.getNombre();
Error, comparable no tiene el mtodo
getNombre().
Si deseamos tratar a obj como un objeto
Cuerpo debemos convertirlo explcitamente a
un objeto de este tipo.

Declaraciones de Interfaces
Puede declarar tres tipos de miembros
1. Constantes (campos)
2. Mtodos
3. Clases o interfaces anidadas
Todos los miembros de una interfaz son
implcitamente pblicos, pero por
convencin se omite el modificador
public.

Constantes de intefaz

Son implicitamente public, static y


final. Deben tener inicializadores.

Mtodos de intefaz
Son implcitamente abstract.
En la declaracin de un mtodo de interfaz
no se permiten otros modificadores. Son
implcitamente public, por lo tanto no
pueden tener ningn otro modificador de
acceso. No pueden ser final, ni
static.
La implementacin de estos mtodos, en
una clase especifica puede incorporar los
modificadores que sean apropiados.

Extensin de interfaces
Las interfaces pueden extender ms de una
interfaz.

Ver el ejemplo Interfaz.zip

You might also like