)定义一个接口Herbivores(食草动物),含有1个default void eat()方法。 (2)定义一个接口Carnivores(食肉动物),含有1个default void eat()方法和1个void sleep()方法。 (3)定义一个Pig类实现Herbivores接口和Carnivores接口,并自行解决方法冲突
时间: 2024-03-25 18:37:19 浏览: 85
定义一个接口,用于描述动物的生活习性,包含食性、捕食、分布区域、睡觉方式、群居方式等;接口里面包括属性和方法
5星 · 资源好评率100%
好的,下面是对应的Java代码:
```java
interface Herbivores {
default void eat() {
System.out.println("Herbivores eat plants.");
}
}
interface Carnivores {
default void eat() {
System.out.println("Carnivores eat meat.");
}
void sleep();
}
class Pig implements Herbivores, Carnivores {
@Override
public void eat() {
Herbivores.super.eat(); // 默认调用Herbivores接口的eat()方法
System.out.println("Pig also eats insects and small animals.");
}
@Override
public void sleep() {
System.out.println("Pig sleeps on the ground.");
}
}
```
在Pig类中,由于同时实现了两个接口,两个接口中都有一个默认方法eat(),因此会发生方法冲突。我们可以在Pig类中重写eat()方法来解决这个问题。
在重写eat()方法时,我们首先调用了Herbivores接口的eat()方法,然后再添加了一句话表示Pig还会吃昆虫和小动物。这里使用了"接口名.super.方法名()"的方式来调用指定接口中的默认方法。
此外,由于Carnivores接口中还有一个sleep()方法,我们也需要在Pig类中实现这个方法,否则Pig类就必须声明为抽象类。
阅读全文