1)定义一个抽象类Weapon,该抽象类有两个抽象方法attack(),move() 这两个方法分别表示武器的攻击方式和移动方式。
(2)定义3个类:Tank,Flighter,WarShip都继承自Weapon, 分别用不同的方式实现Weapon类中的抽象方法。
编写测试程序main方法,创建多个不同武器的实例。并分别调用attack()和move()方法。 能用多态尽量使用多态。 public class Day19{ ?? ?public static void main(String[] args) { ?? ??? ? ? //向上转型 ?? ??? ?Weapon w1 = new Tank() ; ?? ??? ?w1.lbb(); ?? ??? ?//向下转型 ?? ??? ?if (w1 instanceof Tank) { ?? ??? ??? ?Tank t = (Tank)w1; ?? ??? ??? ?System.out.println(1); ?? ??? ??? ?t.attack(); ?? ??? ??? ?t.move(); ?? ??? ?} ?? ?} ? ?? ? } //抽象类? abstract class Weapon{ ?? ?//抽象方法表示武器的攻击方式 抽象方法没有方法体 ?? ?public abstract void attack(); ?? ?//抽象方法表示移动的移动方式 ?? ?public abstract void move(); ?? ?public void lbb() { ?? ??? ?System.out.println(); ?? ?} ?? ? } ?//(2)定义3个类:Tank 坦克,Flighter 飞机,WarShip 舰艇都继承自Weapon, //分别用不同的方式实现Weapon类中的抽象方法。 //坦克类 Tank 继承抽象类Weapon 方法要重写? class Tank extends Weapon { ?? ?//attack方法表示Tank 武器的攻击方式 ?? ?public void attack() { ?? ??? ?System.out.println("坦克炮是坦克的主要武器,主要配备穿甲弹、破甲弹、杀伤爆破弹等弹种。"); ?? ?} ?? ?//move方法表示Tank 坦克移动的移动方式 ?? ?public ?void move() { ?? ??? ?System.out.println("坦克具有越野能力,通过履带移动,履带是由主动轮驱动、围绕着主动轮、负重轮、诱导轮和托带轮的柔性链环"); ?? ?} } //飞机类 Flighter 继承抽象类Weapon 方法要重写? class Flighter extends Weapon { ?? ?//attack方法表示Flighter 武器的攻击方式 ?? ?public void attack() { ?? ??? ?System.out.println("导弹"); ?? ??? ? ?? ?} ?? ?//move方法表示Flighter 移动的移动方式 ?? ?public ?void move() { ?? ??? ?System.out.println("在天上飞"); ?? ?} ?? ? } //舰艇类 WarShip 继承抽象类Weapon 方法要重写? class WarShip extends Weapon { ?? ?//attack方法表示Weapon 武器的攻击方式 ?? ?public void attack() { ?? ??? ?System.out.println("导弹,鱼雷"); ?? ?} ?? ?//move方法表示Weapon 坦克移动的移动方式 ?? ?public ?void move() { ?? ??? ?System.out.println("在水上"); ?? ?} ?? ? } ?? ?
public class Day19{
public static void main(String[] args) {
//向上转型
Weapon w1 = new Tank() ;
w1.lbb();
//向下转型
if (w1 instanceof Tank) {
Tank t = (Tank)w1;
System.out.println(1);
t.attack();
t.move();
}
}
}
//抽象类
abstract class Weapon{
//抽象方法表示武器的攻击方式 抽象方法没有方法体
public abstract void attack();
//抽象方法表示移动的移动方式
public abstract void move();
public void lbb() {
System.out.println();
}
}
//(2)定义3个类:Tank 坦克,Flighter 飞机,WarShip 舰艇都继承自Weapon,
//分别用不同的方式实现Weapon类中的抽象方法。
//坦克类 Tank 继承抽象类Weapon 方法要重写
class Tank extends Weapon {
//attack方法表示Tank 武器的攻击方式
public void attack() {
System.out.println("坦克炮是坦克的主要武器,主要配备穿甲弹、破甲弹、杀伤爆破弹等弹种。");
}
//move方法表示Tank 坦克移动的移动方式
public void move() {
System.out.println("坦克具有越野能力,通过履带移动,履带是由主动轮驱动、围绕着主动轮、负重轮、诱导轮和托带轮的柔性链环");
}
}
//飞机类 Flighter 继承抽象类Weapon 方法要重写
class Flighter extends Weapon {
//attack方法表示Flighter 武器的攻击方式
public void attack() {
System.out.println("导弹");
}
//move方法表示Flighter 移动的移动方式
public void move() {
System.out.println("在天上飞");
}
}
//舰艇类 WarShip 继承抽象类Weapon 方法要重写
class WarShip extends Weapon {
//attack方法表示Weapon 武器的攻击方式
public void attack() {
System.out.println("导弹,鱼雷");
}
//move方法表示Weapon 坦克移动的移动方式
public void move() {
System.out.println("在水上");
}
}
|