Menú Curso Java Básico : Definición y uso de Interfases.

(Anterior) Interfases, Arreglos y Polimorfismo.
En base a su ambiente, abra un Editor de Textos para generar el siguiente ejemplo.

Código Fuente Musica3.java

 
import java.util.*;

interface Instrumento {
    // Constante al compilar, automáticamente static y final 
    int i = 5;
    // Métodos Automáticamente Públicos 
    void tocar();
    String tipo();
    void afinar();
}

class Guitarra implements Instrumento {
    public void tocar() {
	System.out.println("Guitarra.tocar()");
    }
    public String tipo() { return "Guitarra"; }
    public void afinar() {}
}

class Piano implements Instrumento {
    public void tocar() {
	System.out.println("Piano.tocar()");
    }
    public String tipo() { return "Piano"; }
    public void afinar() {}
}

class Saxofon implements Instrumento {
    public void tocar() {
	System.out.println("Saxofon.tocar()");
    }
    public String tipo() { return "Saxofon"; }
    public void afinar() {}
}

// Un tipo de Guitarra 
class Guzla extends Guitarra {
       public void tocar() {
         System.out.println("Guzla.tocar()");
       }
       public void afinar() {
         System.out.println("Guzla.afinar()");
       }
     }

// Un tipo de Guitarra 
class Ukelele extends Guitarra {
    public void tocar() {
	System.out.println("Ukelele.tocar()");
    }
    public String tipo() { return "Ukelele"; }
}

public class Musica3 {

    // No importa el tipo de Instrumento,
    // seguirá funcionando debido a Polimorfismo:
    static void afinar(Instrumento i) {
	// ...
	i.tocar();
    }

    static void afinarTodo(Instrumento[] e) {
	
	for(int i = 0; i < e.length; i++)
	    afinar(e[i]);
    }


    public static void main(String[] args) {
        // Declarar un Arreglo SIN INSTANCIAS es válido en Clases Abstractas
	Instrumento[] orquesta = new Instrumento[5];
	int i = 0;
	// Up-casting al asignarse el Arreglo
	orquesta[i++] = new Guitarra();
	orquesta[i++] = new Piano();
	orquesta[i++] = new Saxofon();
	orquesta[i++] = new Guzla();
	orquesta[i++] = new Ukelele();
	afinarTodo(orquesta);
    }
}

Clase Musica3

La Clase anterior es idéntica aquella definida en los últimos dos ejemplos, sin embargo, la Clase Base de Instrumento fue definida como una interfase a través del vocablo interface, algunos detalles de esta definición :

  • Nótese que los métodos definidos dentro de la interfase no contienen ningún tipo de código dentro de ellos, inclusive no declaran ni llaves ({ }).

  • A diferencia de los métodos definidos en Clases Abstractas, los métodos definidos en Interfases no utilizan ningún calificador de acceso (public, private, protected).

  • Cuando una Clase hace uso de una Interfase esta utiliza la palabra implements, además es necesario definir todos los métodos definidos en la Interfase dentro de la Clase.

En la siguiente sección se describe el uso de Interfases para Herencias Múltiples ("Multiple Inheritance").

Terminos Legales de Contenido ©2000-2008 Osmosis Latina

Diseñado bajo estándares : XHTML   CSS  

webmaster@osmosislatina.com