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("在水上");
}
}