public class SoldierDemo
{
public static void main(String [] args){
Office f1=new Office("邹吉祥");
f1.action();
f1.callAllToAttack();
f1.callSomeToAttack(f1.getSoldier()[1]);
}
}
abstract class Soldier //抽象类;
{
private String name;
public Soldier(String name){
this.name=name;
}
public String getName()
{
return name;
}
public void start()
{
System.out.println("准备开始......");
}
public void end()
{
System.out.println("准备结束......");
}
abstract public void attack(); //一旦一个类中有一个抽象方法,那么这个类就是抽象类
//行动
public void action()
{
start();
attack();
end();
}
}
class LandSoldier extends Soldier
{
public LandSoldier(String name){
super(name); //调用父类的构造方法;
}
public void attack(){
System.out.println(getName()+"用步枪进行攻击");
}
}
class OceanSoldier extends Soldier
{
public OceanSoldier(String name)
{
super(name);
}
public void attack(){
System.out.println(getName()+"用鱼雷进行攻击");
}
}
class Office extends Soldier
{
private Soldier[] soldiers=new Soldier[2]; //定义Soldier类型的数组
public Office(String name)
{
super(name);
soldiers[0]=new LandSoldier("张三"); //用到了多态;
soldiers[1]=new OceanSoldier("李四");
}
public void attack()
{
System.out.println(getName()+"用机关枪进行攻击");
}
public void callAllToAttack()
{
for(int i=0;i<soldiers.length;i++)
{
soldiers[i].action();
}
}
public void callSomeToAttack(Soldier s)
{
s.action();
}
public Soldier[] getSoldier() //返回一个数组;
{
return soldiers;
}
}
java多态的实例(模拟士兵的战争)
最新推荐文章于 2024-02-28 14:11:48 发布