interface CanFight { 
    void fight(); 
} 
interface CanSwim { 
    void swim(); 
} 
interface CanFly { 
    void fly(); 
} 
class ActionCharacter { 
    public void fight() {System.out.println("actionCharacterFIGHT");} 
} 

class Hero extends ActionCharacter implements CanFight, CanSwim, CanFly { 
    void swim() {System.out.println("heroSWIM");} 
    public void fly() {System.out.println("heroFLY");} 
}

class Dummy implements CanSwim, CanFly { 
    public void swim() {System.out.println("dummySWIM");} 
    public void fly() {System.out.println("dummyFLY");} 
}

public class Adventure { 
    public static void t(CanFight x) { x.fight(); }
    public static void u(CanSwim x) { x.swim(); } 
    public static void v(CanFly x) { x.fly(); } 
    public static void w(ActionCharacter x) { x.fight(); }
	
    public static void main(String[] args) { 
        Hero h = new Hero(); 
		
		Dummy d = new Dummy();
		
		CanFly f1 = h;
		CanFly f2 = d;
		
		f1.fly();
		f2.fly();
		
		
        /*t(h); // Treat it as a CanFight 
        u(h); // Treat it as a CanSwim 
		u(d);
        v(h); // Treat it as a CanFly 
		v(d);
        w(h); // Treat it as an ActionCharacter */
    } 
}
