多态 抽象 综合

来源:互联网 发布:淘宝代购加盟 编辑:程序博客网 时间:2024/06/04 18:19
<span style="font-size:18px;">public class SoldierDemo {public static void main(String[] args) {// TODO Auto-generated method stubOfficer officer = new Officer("贺景洲");officer.callToAttack();//所有System.out.print("***************");officer.callToAttack(officer.getSoldiers()[0]);}}/** * 军人类 * @author Hejingzhou * */abstract class Soldier{private String name;/** * 构造方法重写名字属性 * @param name */public Soldier(String name){this.name = name;}public String getName(){return name;}public void action(){ start();attack();end();}public void start(){System.out.println("开始作战");}public abstract void attack();//抽象方法//作战public void end(){System.out.println("作战结束");}}//创建一个陆军继承军人class LandSoldier extends Soldier{public LandSoldier(String name){super(name);}/** * 攻击方法  实现抽象类中的抽象方法 */public void attack() {// TODO Auto-generated method stubSystem.out.println(getName()+"使用步枪射击");}}//创建一个海军继承军人class OceanSoldier extends Soldier{public OceanSoldier(String name){super(name);}/** * 攻击方法  实现抽象类中的抽象方法 */public void attack() {// TODO Auto-generated method stubSystem.out.println(getName()+"使用鱼雷射击");}}//创建一个军官class Officer extends Soldier{ private Soldier[] soldier = new Soldier[2];//军官持有两个大兵public Officer(String name){super(name);soldier[0] = new LandSoldier("张三");soldier[1] = new OceanSoldier("李四");} public Soldier[] getSoldiers(){return soldier;}public void attack() {// TODO Auto-generated method stubSystem.out.println(getName()+"使用手枪射击");}//特有的发号施令   所有士兵都发送攻击 包括自己public void callToAttack(){for(int i=0;i<soldier.length;i++){soldier[i].action();}this.action();//自己也攻击}//让一个士兵攻击public void callToAttack(Soldier soldier){soldier.action();}}</span>




开始作战
张三使用步枪射击
作战结束
开始作战
李四使用鱼雷射击
作战结束
开始作战
贺景洲使用手枪射击
作战结束
***************开始作战
张三使用步枪射击
作战结束

0 0