Java学习之面向对象(1.接口)

1.接口(interface):

(1)多个无关的类可以实现同一个接口。

(2)一个类可以实现多个无关的接口。

(3)与继承关系类似,接口与实现类之间存在多态性。

 (4)接口是抽象方法和常量值的定义的集合。

(5)从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。

接口定义举例:

public interface Runner{

  public static final int id=1;

  public void start();

  public void run();

  public void stop();

}

 

 

2.接口的特性:

(1)接口可以多重实现;(多继承)

(2)接口中声明的属性默认为 public static final 的,也只能是 public static final 的;

(3)接口中只能定义抽象方法,而且这些方法默认为 public的,也只能是 public的;

(4)接口可以继承其它的接口,并添加新的属性和抽象方法。( interface A extends B{})

 

这里有一个游戏,人猿泰山。
主角是一个单独的类,这里我们主要用怪物说明接口的用法:
怪物有很多种,
按地域分:有的在天上飞,有的在地上跑,有的在水里游
按攻击方式分:有的能近距离物理攻击,有的能远距离射击

假设游戏里需要这样的几种怪——
野狗:地上移动,近距离攻击
黑熊:地上移动,近/远距离攻击
秃鹫:地上/天上移动,远距离攻击
食人鱼:水中移动,近距离攻击
鳄鱼:地上/水中移动,近距离攻击

 1 interface OnEarth{//陆地接口
 2 int earthSpeed=100;//陆地移动速度
 3 void earthMove();//陆地移动方法
 4 }
 5 
 6 interface OnWater{//水中接口
 7 int waterSpeed=200;//水中移动速度
 8 void waterMove();//水中移动方法
 9 }
10 
11 interface OnAir{//空中接口
12 int airSpeed=1000;//水中移动速度
13 void airMove();//水中移动方法
14 }
15 
16 interface NearAttack{//近距离攻击接口
17 int nearAttackPower=100;//近距离攻击力
18 void nearAttack();//近距离攻击方法
19 }
20 
21 interface FarAttack{//远距离攻击接口
22 int farAttackPower=100;//远距离攻击力
23 void farAttack();//远距离攻击方法
24 }
25 
26 //这样一来,根据需求,我们可以选择性的继承接口:
27 class Tyke implements OnEarth, NearAttack{ //野狗类
28 public void earthMove(){//实现继承的方法1
29     System.out.println("earthMove");
30     } 
31 public void nearAttack(){//实现继承的方法2
32     System.out.println("nearAttack");
33     }
34 }
35 
36 class BlackBear implements OnEarth, NearAttack, FarAttack{//黑熊类
37 public void earthMove(){//实现继承的方法1
38     System.out.println("earthMove");
39 } 
40 public void nearAttack(){//实现继承的方法2
41     System.out.println("nearAttack");
42 }
43 public void farAttack(){//实现继承的方法3
44     System.out.println("farAttack");
45 }
46 }
47 
48 class Vulture implements OnEarth, OnAir, FarAttack{//秃鹫类
49 public void earthMove(){//实现继承的方法1
50     System.out.println("earthMove");
51 } 
52 public void airMove(){//实现继承的方法2
53     System.out.println("airMove");
54 } 
55 public void farAttack(){//实现继承的方法3
56     System.out.println("farAttack");
57 }
58 }
59 
60 class ManeatFish implements OnWater, NearAttack{//食人鱼类
61 public void waterMove(){//实现继承的方法1
62     System.out.println("waterMove");
63 } 
64 public void nearAttack(){//实现继承的方法2
65     System.out.println("nearAttack");
66 }
67 }
68 
69 class Crocodile implements OnEarth, OnWater, NearAttack{//鳄鱼类
70 public void earthMove(){//实现继承的方法1
71     System.out.println("earthMove");
72 } 
73 public void waterMove(){//实现继承的方法2
74     System.out.println("waterMove");
75 }
76 public void nearAttack(){//实现继承的方法3
77     System.out.println("nearAttack");
78 }
79 }
80 public class TextInterface{
81 public static void main(String[] args){
82     Crocodile c=new Crocodile();
83     c.earthMove();
84     
85 }
86 }

 

输出:

earthMove



 

 

 

 

 

 

posted @ 2013-03-19 14:46  佬D  阅读(753)  评论(0编辑  收藏  举报