miércoles, 18 de mayo de 2011

Herencias Múltiples

Herencia múltiple: una clase puede heredar características de una o más clases, por lo tanto, puede tener varios padres.
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 llamado operar 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 Clase Cirujano.
  • Seguido se implementan las interfases PuedeCurar,PuedeConsultar,PuedeRecetar a través de implements, 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 Clase Medico.
  • 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ón curar, nótese que aunque el dato de entrada aparece como PuedeCurar (Interfase) la invocación se lleva acabo directamente de la Clase Medico.
  • El método s manda llamar la función consultar, nótese que aunque el dato de entrada aparece como PuedeConsultar (Interfase) la invocación se lleva acabo directamente de la Clase Medico.
  • El método t manda llamar la función recetar, nótese que aunque el dato de entrada aparece como PuedeRecetar (Interfase) la invocación se lleva acabo directamente de la Clase Medico.
  • El método u invoca la función operar disponible en la Clase Cirujano.


 
 
 

No hay comentarios:

Publicar un comentario