1 package test_11_1; 2 3 public interface CanFight { 4 5 void fight(); 6 }
1 package test_11_1; 2 3 public interface CanSwim { 4 5 void swim(); 6 }
1 package test_11_1; 2 3 public interface CanFly{ 4 5 void fly(); 6 }
1 package test_11_1; 2 3 public interface CanFlyStop { 4 5 void flyStop(); 6 }
1 package test_11_1; 2 3 public interface CanFlyHigh extends CanFly, CanFlyStop{ 4 5 void flyHigh(); 6 }
1 package test_11_1; 2 3 public interface CanFlyLow extends CanFly, CanFlyStop{ 4 5 void flyLow(); 6 }
1 package test_11_1; 2 3 public class ActionCharacter { 4 5 public void fight() { 6 System.out.println("ActionCharacter fight"); 7 } 8 }
1 package test_11_1; 2 3 public class Hero extends ActionCharacter implements CanFight, CanSwim, CanFlyHigh, CanFlyLow { 4 5 // 未直接继承接口CanFly和CanFlyStop,但CanFlyHigh及CanFlyLow继承接口CanFlyHigh和CanFlyStop 6 // fight()在基类ActionCharacter中已提供定义,所以即使Hero中未显式提供fight定义,也可以创建Hero对象 7 @Override 8 public void fly() { 9 System.out.println("Hero fly"); 10 } 11 12 @Override 13 public void flyStop() { 14 System.out.println("Hero flyStop"); 15 } 16 17 @Override 18 public void flyLow() { 19 System.out.println("Hero flyLow"); 20 } 21 22 @Override 23 public void flyHigh() { 24 System.out.println("Hero flyHigh"); 25 } 26 27 @Override 28 public void swim() { 29 System.out.println("Hero flySwim"); 30 } 31 32 }
1 package test_11_1; 2 3 public class Adventure { 4 5 public static void t(CanFight x) { 6 x.fight(); 7 } 8 9 public static void u(CanSwim x) { 10 x.swim(); 11 } 12 13 public static void v(CanFly x) { 14 x.fly(); 15 } 16 17 public static void w(CanFlyStop x) { 18 x.flyStop(); 19 } 20 21 public static void x(CanFlyHigh x) { 22 x.flyHigh(); 23 x.fly(); 24 x.flyStop(); 25 } 26 27 public static void y(CanFlyLow x) { 28 x.flyLow(); 29 x.fly(); 30 x.flyStop(); 31 } 32 33 public static void z(ActionCharacter x) { 34 x.fight(); 35 } 36 37 public static void main(String[] args) { 38 39 Hero hero = new Hero(); 40 // Hero可依次向上转型为每一个接口 41 t(hero); 42 u(hero); 43 v(hero); 44 w(hero); 45 x(hero); 46 y(hero); 47 z(hero); 48 } 49 50 }
结果如下:
ActionCharacter fight
Hero flySwim
Hero fly
Hero flyStop
Hero flyHigh
Hero fly
Hero flyStop
Hero flyLow
Hero fly
Hero flyStop
ActionCharacter fight
[20-05-13][Thinking in Java 13]Java Interfaces 3 - Multiple Interfaces
原文:https://www.cnblogs.com/mirai3usi9/p/12885377.html