ejemplo:
import java.util.*;
interface PuedeCurar {
void curar();
}
interface PuedeConsultar {
void consultar();
}
interface PuedeRecetar{
void recetar();
}
class Cirujano {
public void operar() { System.out.println("Cirujano.operar()"); }
}
class Medico extends Cirujano
implements PuedeCurar, PuedeConsultar, PuedeRecetar {
public void curar() { System.out.println("Medico.curar()"); }
public void consultar() { System.out.println("Medico.consultar()"); }
public void recetar() { System.out.println("Medico.recetar()"); }
}
class Cardiologo {
static void r(PuedeCurar x) { x.curar(); }
static void s(PuedeConsultar x) { x.consultar(); }
static void t(PuedeRecetar x) { x.recetar(); }
static void u(Cirujano x) { x.operar(); }
public static void main(String[] args) {
Medico m = new Medico();
r(m);
s(m);
t(m);
u(m);
}
}Interfases PuedeCurar,PuedeConsultar,PuedeRecetar.
Cada una de estas interfases define un método el cual deberá ser implementado en las respectivas Clases que hagan uso de las interfases.Clase Cirujano.
Esta Clase simplemente define un método llamadooperar que imprime un mensaje a pantalla.Clase Medico.
Contiene la mayor parte de código funcional de este archivo fuente:- Es definida al igual que cualquier otra Clase con el vocablo
class. - Se utiliza el vocablo
extendspara heredar ("Inherit") el comportamiento de la ClaseCirujano. - Seguido se implementan las interfases
PuedeCurar,PuedeConsultar,PuedeRecetara través deimplements, esto obliga a que sean definidos los métodos de las diversas interfases. - Son escritas las diversas implementaciones de los métodos de cada interfase, los cuales envían un mensaje a pantalla.
Clase Cardiologo.
- Dentro del método principal (
main) de esta Clase se genera una instancia de la ClaseMedico. - A través de dicha referencia son invocados los diversos métodos locales
r,s,t,u. - El método
rmanda llamar la funcióncurar, nótese que aunque el dato de entrada aparece comoPuedeCurar(Interfase) la invocación se lleva acabo directamente de la ClaseMedico. - El método
smanda llamar la funciónconsultar, nótese que aunque el dato de entrada aparece comoPuedeConsultar(Interfase) la invocación se lleva acabo directamente de la ClaseMedico. - El método
tmanda llamar la funciónrecetar, nótese que aunque el dato de entrada aparece comoPuedeRecetar(Interfase) la invocación se lleva acabo directamente de la ClaseMedico. - El método
uinvoca la funciónoperardisponible en la ClaseCirujano.
No hay comentarios:
Publicar un comentario