(1)父类 Animal中增加两个常量。(2)增加陆生动物和水生动物接口。(3)三个子类分别实现这两个接口。
时间: 2024-12-10 15:33:03 浏览: 12
首先,我们来创建一个名为`Animal`的基类,增加两个常量,然后定义一个陆生动物和一个水生动物的接口,最后让三个子类分别实现这些接口。
```java
// 创建一个Animal基类
public class Animal {
// 常量定义
public static final String TYPE_ON LAND = "Land Animal";
public static final String TYPE_IN WATER = "Water Animal";
// 定义构造函数和其他成员方法(这里省略)
}
// 定义陆生动物接口
interface TerrestrialLiving {
void breatheAir();
String getLifestyle(); // 返回生活方式描述,如"Breathes air, lives on land"
}
// 定义水生动物接口
interface AquaticLiving {
void breatheWater();
String getLifestyle(); // 返回生活方式描述,如"Breathes water, lives in water"
}
// 子类1:Dog(陆生动物)
class Dog extends Animal implements TerrestrialLiving {
@Override
public void breatheAir() {
System.out.println("Dog breathes air");
}
@Override
public String getLifestyle() {
return TYPE_ON LAND;
}
}
// 子类2:Fish(水生动物)
class Fish extends Animal implements AquaticLiving {
@Override
public void breatheWater() {
System.out.println("Fish breathes water");
}
@Override
public String getLifestyle() {
return TYPE_IN WATER;
}
}
// 子类3:Crocodile(既能在水中也能在陆地上生活)
class Crocodile extends Animal {
private boolean isAquatic;
// 初始化状态等方法...
@Override
public void breatheAir() {
if (isAquatic) {
System.out.println("Crocodile can breathe air occasionally");
} else {
System.out.println("Crocodile breathes air");
}
}
@Override
public void breatheWater() {
if (!isAquatic) {
System.out.println("Crocodile breathes water when in water");
} else {
System.out.println("Crocodile primarily breathes water");
}
}
@Override
public String getLifestyle() {
return isAquatic ? TYPE_IN WATER : TYPE_ON LAND;
}
}
```
阅读全文