首页 > 编程语言 > 详细

[20-05-13][Thinking in Java 13]Java Interfaces 3 - Multiple Interfaces

时间:2020-05-14 00:13:23      阅读:66      评论:0      收藏:0      [点我收藏+]
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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!