1 //接口,使抽象类的概念更深一层,类似于纯抽象类,它内部也是提供方法基本形式,不实现主体代码。
2 public interface I_Instrument {
3 int i = 5;//接口也可以包含基本数据类型的数据成员,它们的权限默认为static and final
4 void play();//接口中的方法默认权限是public,因为接口就是为公开而设计
5 String what();
6 void adjust();
7 }
8
9 class Wind_I implements I_Instrument{
10 public void play(){//所以在实现接口的方法时,必须声明为public,而为接口中的方法默认就是public
11 System.out.println("Wind_I.play");
12 }
13 public String what(){//所以在实现接口的方法时,必须声明为public
14 return "Wind_I";
15 }
16 public void adjust(){}//所以在实现接口的方法时,必须声明为public
17 }
18
19 class Percussion_I implements I_Instrument{
20 public void play(){//所以在实现接口的方法时,必须声明为public
21 System.out.println("Percussion_I.play");
22 }
23 public String what(){//所以在实现接口的方法时,必须声明为public
24 return "Percussion_I";
25 }
26 public void adjust(){}//所以在实现接口的方法时,必须声明为public
27 }
28
29 class Stringed_I implements I_Instrument{
30 public void play(){//所以在实现接口的方法时,必须声明为public
31 System.out.println("Stringed_I.play");
32 }
33 public String what(){//所以在实现接口的方法时,必须声明为public
34 return "Stringed_I";
35 }
36 public void adjust(){}//所以在实现接口的方法时,必须声明为public
37 }
38
39 class Brass_I implements I_Instrument{
40 public void play(){//所以在实现接口的方法时,必须声明为public
41 System.out.println("Brass_I.play");
42 }
43 public String what(){//所以在实现接口的方法时,必须声明为public
44 return "Brass_I";
45 }
46 public void adjust(){}//所以在实现接口的方法时,必须声明为public
47 }
48
49 class WoodWind_I implements I_Instrument{
50 public void play(){//所以在实现接口的方法时,必须声明为public
51 System.out.println("WoodWind_I.play");
52 }
53 public String what(){//所以在实现接口的方法时,必须声明为public
54 return "WoodWind_I";
55 }
56 public void adjust(){}//所以在实现接口的方法时,必须声明为public
57 }
public class Music {
static void tune(I_Instrument i){
i.play();
}
static void tuneAll(I_Instrument[] is){
for(int i = 0;i < is.length;++i){
tune(is[i]);
}
}
/**
* @param args
*/
public static void main(String[] args) {
I_Instrument[] someInstruments = new I_Instrument[5];
int i = 0;
someInstruments[i++] = new Wind_I();
someInstruments[i++] = new Percussion_I();
someInstruments[i++] = new Stringed_I();
someInstruments[i++] = new Brass_I();
someInstruments[i++] = new WoodWind_I();
tuneAll(someInstruments);
}
}