Java第6章-接口与多态-实验一(作战命令)

实验指导:

接口变量可以存放任何实现了该接口的类的实例,所以接口变量就可以帮助该实例调用类所实现的接口方法。

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;
        }
    }
 
}

运行结果:




总结:我所理解的接口回调就是:类里面的方法参数使用了接口定义的参数,则接口所建立的参数便可以调用接口中的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早日退休过上不劳而获生活

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值