Java使用继承与接口编程解决问题。 a)编写一个Car类,编写一个Tank类,继承自Car类; b)编写一个Plane类,编写一个Fighter类,继承自Plane类; c)Tank类和Fighter类都具有攻击的行为方法。进行测试。
时间: 2024-12-28 16:32:40 浏览: 0
在Java中,继承和接口通常用于实现多态和代码复用。让我们逐步解释这个问题:
a) 首先,创建一个`Car`类作为基础类,它可能包含一些通用属性和方法,如颜色、速度等:
```java
public class Car {
private String color;
private int speed;
// 构造函数,getter和setter方法...
public void drive() {
System.out.println("Driving a car...");
}
}
```
接着,创建`Tank`类和`Fighter`类,它们分别继承自`Car`类,并可能添加特定于坦克和战斗机的特性,如炮台、飞行能力等:
```java
public class Tank extends Car {
private int gunPower;
// 构造函数,getter和setter方法...
public void attack() {
System.out.println("Firing tank cannon with power " + gunPower);
}
}
public class Fighter extends Plane {
private double agility;
// 构造函数,getter和setter方法...
public void attack() {
System.out.println("Striking with fighter jet at high agility " + agility);
}
}
```
b) 对于`Plane`类,我们可以想象它是`Car`的一个子类,共享一些基本属性,比如速度:
```java
public abstract class Plane extends Car {
// 省略具体的实现,因为Fighter直接继承了这个抽象类
}
```
现在,`Tank`和`Fighter`都实现了`attack`方法,尽管它们各自的攻击方式不同。
c) 测试部分可以这样进行:
```java
public static void main(String[] args) {
Tank myTank = new Tank();
myTank.color = "Green";
myTank.speed = 50;
myTank.attack(); // 输出 "Firing tank cannon with power..."
Fighter myFighter = new Fighter();
myFighter.color = "Silver";
myFighter.agility = 9.8; // 想象这是一个飞机敏捷度
myFighter.drive(); // 输出 "Flying fighter jet..."
myFighter.attack(); // 输出 "Striking with fighter jet at high agility..."
}
```
通过这种方式,我们利用继承和多态使得代码更加模块化,每个类专注于自身的特点,同时在需要的时候能够统一地调用`attack`方法。这有助于提高代码的灵活性和可维护性。
阅读全文