next up previous contents
Next: Clases y paquetes Up: Repaso de Java Previous: Clonar objetos

Interfaces

Usando interface en vez de class se define una interfaz a una clase sin especificar el código de los métodos.

Una interfaz no es nada más que una especificación de cómo algo debe ser implementado para que se pueda usar en otro código.

Una interfaz no puede tener declaraciones de objetos que no son ni constantes (final) ni estáticos (static). En otras palabras, todas las declaraciones de objetos automáticamente son finales y estáticos, aunque no se haya descrito explícitamente.

Igual que las clases, las interfaces pueden incorporar otras clases o interfaces. También se pueden extender interfaces. Nota que es posible extender una interfaz a partir de más de una interfaz:

interface ThisOne extends ThatOne, OtherOne { ... }

Todos los métodos de una interfaz son implícitamente públicos y abstractos, aunque no se haya descrito ni public ni abstract explícitamente (y eso es la convención).

Los demás modificadores no están permitidos para métodos en interfaces.

Para generar un programa todas las interfaces usadas tienen que tener sus clases que las implementen.

Una clase puede implementar varias interfaces al mismo tiempo (aunque una clase puede extender como mucho una clase). Se identifican las interfaces implementadas con implements después de una posible extensión (extends) de la clase.

Ejemplo:

public interface Comparable {
  int compareTo(Object o);
}

class Something extends Anything implements Comparable {
  ...
  public int compareTo(Object o) {
      // cast to get a correct object
      // may throw exception ClassCastException
    Something s = (Something)o;
    ... // code to compare to somethings
  }

Las interfaces se comportan como clases totalmente abstractas, es decir, que no tienen ni miembros no-estáticos, nada diferente a público, y ningún código no-estático.


next up previous contents
Next: Clases y paquetes Up: Repaso de Java Previous: Clonar objetos
© 2002, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática