Definición:
Una interfaz es una declaración de comportamiento, es decir un conjunto
de métodos sin su implementación. Define un protocolo de comportamiento. Es un
contrato que publica una clase para ser utilizada por otras clases. Puede
heredar de otras interfaces.
Ejemplo en Java:
public interface Imprimible {
public void imprimir ();
public void imprimir (Tamaño t, Estilo e);
public interface Imprimible {
public void imprimir ();
public void imprimir (Tamaño t, Estilo e);
}
Utilizacion:
public class Documento implements Imprimible{
public void imprimir(){
//Acá va la definición.
}
public void imprimir(Tamaño t, Estilo e){
//Acá va la definición.
}
}
public class Documento implements Imprimible{
public void imprimir(){
//Acá va la definición.
}
public void imprimir(Tamaño t, Estilo e){
//Acá va la definición.
}
}
Ejemplo de mini programa con interfaces:
public class Aeropuerto {
public void darPermisoDeAterrizaje(Volador v){
/*
Aca va el codigo de despejar pista y permitir
aterrizar al volador v
En el programa se puede iterar sobre una
lista de voladores e ir dando
permiso de aterrizaje a cada volador, sin
especificar que tipo
especifico de volador se trata
*/
v.aterrizar();
if(v instanceof AvionPrivado){
AvionPrivado ap =
(AvionPrivado)v;
System.out.println("Aterrizo Licencia " + ap.getLicencia());
}
if(v instanceof AvionDePasajeros){
AvionDePasajeros adp =
(AvionDePasajeros)v;
System.out.println("Aterrizo Licencia " + adp.getAerolinea());
}
if(v instanceof
Superman){
Superman
sp = (Superman)v;
System.out.println("Aterrizo
Licencia " + sp.getNombre());
}
}
}
Luego tenemos distintos TransportesAereos, un AvionDePasajeros, un
AvionPrivado y luego tenemos a Superman.
Entonces lo que se hace es utilizar la interfaz para definir un mismo comportamiento a clases bien distintas, porque no heredan de la misma clase genérica.
Entonces lo que se hace es utilizar la interfaz para definir un mismo comportamiento a clases bien distintas, porque no heredan de la misma clase genérica.
public interface Volador {
//Obligamos a cada volador a programar su modo de
aterrizar
public void
aterrizar();
}
public abstract class TransporteAereo {
}
class AvionPrivado extends TransporteAereo implements Volador{
private String licencia;
@Override
public void aterrizar() {
//Aca va el codigo del modo que tiene que aterrizar
un avion privado
}
public String getLicencia() {
return licencia;
}
public void setLicencia(String
licencia) {
this.licencia =
licencia;
}
}
class AvionDePasajeros extends TransporteAereo implements Volador{
private String aerolinea;
@Override
public void aterrizar() {
//Aca va el codigo del modo que tiene que aterrizar un
avion de pasajeros
}
public String getAerolinea() {
return aerolinea;
}
public void setAerolinea(String
licencia) {
this.aerolinea =
licencia;
}
}
class Superman extends TransporteAereo implements Volador{
@Override
public void aterrizar() {
//Aca va el codigo del modo que tiene que aterrizar de
Superman
}
public String getNombre() {
return "Clark
Kent";
}
}
public class Programa {
public static void main(String[]
args) {
AvionPrivado v1 = new
AvionPrivado();
v1.setLicencia("L123456F");
AvionDePasajeros v2 = new
AvionDePasajeros();
v2.setAerolinea("Aerolineas
Args");
Superman v3 = new Superman();
Aeropuerto ap = new Aeropuerto();
ap.darPermisoDeAterrizaje(v1);
ap.darPermisoDeAterrizaje(v2);
ap.darPermisoDeAterrizaje(v3);
}
}
En este caso se ve como se puede llamar al método aterrizar () de los
objetos Voladores, porque la interfaz Volador tiene un método aterrizar () y al
implementar una interfaz se esta diciendo que se tendrá ese comportamiento, es
decir que se implementan sus métodos.
No hay comentarios:
Publicar un comentario