Animal 類別(抽象類別)
java
Copy code
public abstract class Animal {
private String name;
protected int speed;
public static final int DISTANCE = 1000;
// 無參數建構子
public Animal() {
this.name = "No Name";
this.speed = 1;
}
// 有參數建構子
public Animal(String theName, int theSpeed) {
this.name = theName;
this.speed = theSpeed;
}
// toString 方法
@Override
public String toString() {
return name + " with speed " + speed;
}
// 抽象方法
public abstract double time();
}
Turtle 類別(烏龜)
java
Copy code
public class Turtle extends Animal {
// 無參數建構子
public Turtle() {
super();
}
// 有參數建構子
public Turtle(String theName, int theSpeed) {
super(theName, theSpeed);
}
// 覆寫 time 方法
@Override
public double time() {
return (double) DISTANCE / speed;
}
// 覆寫 toString 方法
@Override
public String toString() {
return super.toString() + ", Time: " + time() + " hours";
}
}
Rabbit 類別(兔子)
java
Copy code
public class Rabbit extends Animal {
private int sleep; // 兔子睡眠時間
// 無參數建構子
public Rabbit() {
super();
this.sleep = 0;
}
// 有參數建構子
public Rabbit(String theName, int theSpeed, int theSleep) {
super(theName, theSpeed);
this.sleep = theSleep;
}
// 覆寫 time 方法
@Override
public double time() {
return ((double) DISTANCE / speed) + sleep;
}
// 覆寫 toString 方法
@Override
public String toString() {
return super.toString() + ", Sleep: " + sleep + " hours, Total Time: " + time() + " hours";
}
}
這些類別滿足題目的所有要求,包括抽象類別Animal定義的特性和方法,以及Turtle和Rabbit類別的具體實現。這裡假設動物賽跑的時間單位為小時。