Sunteți pe pagina 1din 13

Interface

La principal diferencia de la Interfaz

Es que un interfaz proporciona un mecanismo de encapsulacin de los protocolos de los mtodos sin forzar al usuario a utilizar la herencia. Ejemplo:

La interfaz VideoClip:

public interface VideoClip { // comienza la reproduccin del video void play(); // reproduce el clip en un bucle void bucle(); // detiene la reproduccin void stop(); }

La clase que implementa la interfaz Videoclip


class MiClase implements VideoClip { void play() { <cdigo> } void bucle() { <cdigo> } void stop() { <cdigo> } }

Comportamiento de la interfaz

Al utilizar implements para la interface es como si se hiciese una accin de copiar-y-pegar del cdigo del interface, con lo cual no se hereda nada, solamente se pueden usar los mtodos.

Comportamiento de la interfaz

El aspecto ms importante del uso de interfaces es que mltiples objetos de clases diferentes pueden ser tratados como si fuesen de un mismo tipo comn, donde este tipo viene indicado por el nombre del interfaz. La definicin de un interfaz no tiene constructor, por lo que no es posible invocar el operador new sobre un tipo interfaz.

Heredar e Implementar
Desde una interfaz se puede heredar varias interfaces sin ningn problema. Una clase solo puede heredar una vez otra clase base. Una clase puede implementar varias interfaces.

Ejemplo:

Demostracin 2 interfaces
public interface Constantes { public final double pi = 6.14; public final int constanteInt = 125; } public interface Minterfaz { void put( int dato ); int get(); }

Interfaz hereda 2 mas


public interface MiInterfaz extends Constantes, Minterfaz { public final double PI = 3.14159; public final int entero = 125; void put( int dato ); int get(); }

Implementacin
class ClaseA implements Constantes,Minterfaz { double dDato; //Define las versiones de put() y get() que utiliza la ClaseA public void put( int dato ) { // Se usa "pi" del interfaz Constantes dDato = (double)dato * pi; System.out.println( "En put() de ClaseA, usando pi del interfaz " + "Constantes: " + dDato ); } public int get() { return( (int)dDato ); } // Se define un mtodo show() para la ClaseA que no esta declarado en el interfaz Minterfaz

void show() { System.out.println("En show() de ClaseA, dDato = " + dDato ); } }

Herencia Mltiple

Un interfaz no es solamente una forma ms pura de denominar a una clase abstracta, su propsito es mucho ms amplio que eso. Como un interfaz no tiene ninguna implementacin, es decir, no hay ningn tipo de almacenamiento asociado al interfaz, no hay nada que impida la combinacin de varios interfaces.

Ejemplo:

import java.util.*; interface Luchar { void luchar(); } interface Nadar { void nadar(); } interface Volar { void volar(); } class Accion { public void luchar() { } } class Heroe extends Accion implements Luchar,Nadar,Volar { public void nadar() {} public void volar() {} }

public class java516 { static void a( Luchar x ) { x.luchar(); } static void b( Nadar x ) { x.nadar(); } static void c( Volar x ) { x.volar(); } static void d( Accion x ) { x.luchar(); } public static void main( String args[] ) { Heroe i = new Heroe(); a( i ); // Trata al Heroe como Luchar b( i ); // Trata al Heroe como Nadar c( i ); // Trata al Heroe como Volar d( i ); // Trata al Heroe como Accin } }

S-ar putea să vă placă și