interface Base1 { 
   void f( ); 
} 
 
interface Base2 { 
   void g( ); 
} 
 
class Derivado implements Base1, Base2 {     // como las interfaces no tienen variables miembro, la herencia múltiple de interfaces es internamente sencilla y se permite
   public void f( ) {                        // C++ permite herencia múltiple de tipos que no son interfaces, pero esto complica mucho la situación
      System.out.println("f de Derivado"); 
   } 
   public void g( ) { 
      System.out.println("g de Derivado"); 
   } 
} 
 
void main( ) { 
   Derivado d = new Derivado( ); 
   d.f( ); d.g( ); 
 
   Base1 b1 = d; 
   b1.f( ); 
 
   Base2 b2 = d; 
   b2.g( ); 
} 
