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
extends
para heredar ("Inherit") el comportamiento de la ClaseCirujano
. - Seguido se implementan las interfases
PuedeCurar,PuedeConsultar,PuedeRecetar
a 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
r
manda 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
s
manda 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
t
manda 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
u
invoca la funciónoperar
disponible en la ClaseCirujano
.
No hay comentarios:
Publicar un comentario