实验指导:
接口变量可以存放任何实现了该接口的类的实例,所以接口变量就可以帮助该实例调用类所实现的接口方法。
Test.java
import exercise.LeaderHeader;
import exercise.ShiZhang;
import exercise.LvZhang;
public class Test {
public static void main(String[]args){
LeaderHeader leader=new LeaderHeader();
ShiZhang oneshi=new ShiZhang("第一师");
oneshi.setSoldierNumber(986);
leader.setBattleContent("攻入北城!");
leader.giveCommand(oneshi);
LvZhang onelv=new LvZhang("第一旅");//需要调用的包里面的函数都必须是public类型的,否则调用不出
onelv.setSoldierNumber(567);
leader.setBattleContent("在二号公路阻击敌人!");
leader.giveCommand(onelv);
}
}
exercier包中
Commander.java
</pre><pre class="java" name="code">package exercise;
public interface Commander {
public abstract void battle(String mess);
}
LeaderHeader.java
package exercise;
public class LeaderHeader {
String battleContent;
public void giveCommand(Commander com){
com.battle(battleContent); //com回调接口方法,并将battleContent传递给接口方法的参数
}
public void setBattleContent(String s){
battleContent=s;
}
}
ShiZhang.java
package exercise;
public class ShiZhang implements Commander{
final int MAXSoldierNumber=1000;//士兵数量
int soldierNumber=1;
String name;//师长的名字
public ShiZhang(String s){
name=s;
}
@Override
public void battle(String mess) {
System.out.println(name+" 接到作战命令 "+mess);
System.out.println(name+" 指派 "+soldierNumber+" 人参与作战!");
System.out.println(name+"保证完成任务!");
}
public void setSoldierNumber(int m){//如果不是public则在test函数里面没法用
if(m>=MAXSoldierNumber){
soldierNumber=MAXSoldierNumber;
}
else if(m<MAXSoldierNumber&&m>0){
soldierNumber=m;
}
}
}
LvZhang.java
package exercise;
public class LvZhang implements Commander{
final int MAXSoldierNumber=1000;//士兵数量
int soldierNumber=1;
String name;//旅长的名字
public LvZhang(String s){
name=s;
}
@Override
public void battle(String mess) {
System.out.println(name+" 接到作战命令 "+mess);
System.out.println(name+" 指派 "+soldierNumber+" 人参与作战!");
System.out.println(name+"保证完成任务!");
}
public void setSoldierNumber(int m){
if(m>=MAXSoldierNumber){
soldierNumber=MAXSoldierNumber;
}
else if(m<MAXSoldierNumber&&m>0){
soldierNumber=m;
}
}
}
运行结果:
总结:我所理解的接口回调就是:类里面的方法参数使用了接口定义的参数,则接口所建立的参数便可以调用接口中的方法