Java 实现另一个接口的变通接口

Java 实现另一个接口的变通接口,java,interface,implements,Java,Interface,Implements,我试图为游戏中的对象定义一些属性,所以我使用接口来指定它们 我已经创建了一个interactiable接口,但是我想创建一个Eatable接口,它显然实现了interactiable,因为交互是为了吃,但我不能这样做,因为我不能在接口中实现方法 有解决办法吗 public interface Interactable { void interact(); } public interface Eatable implements Interactable { public vo

我试图为游戏中的对象定义一些属性,所以我使用接口来指定它们

我已经创建了一个
interactiable
接口,但是我想创建一个
Eatable
接口,它显然实现了
interactiable
,因为交互是为了吃,但我不能这样做,因为我不能在接口中实现方法

有解决办法吗

public interface Interactable {
    void interact();
}

public interface Eatable implements Interactable {
    public void eat();
    public void interact() {
        // Obviously, this doesn't work
        eat();
    }
}

首先,接口只能扩展另一个接口,使
Eatable
抽象类和实现
可交互

public abstract class Eatable implements Interactable {
    public void eat();
    public void interact() {
        eat();
    }
}
Iterfaces可以“扩展”其他接口


不过,在本例中,我会创建一个抽象基类“Food”或实现可交互的东西,其interact()方法调用一个抽象eat()方法。

谢谢您的快速回答!问题是,我希望将Eatable作为一个接口来维护,因为我希望Apple实现它,而不是从它扩展(由于java的多重实现:Eatable、moveable等),我认为您不希望Apple直接实现所有这些东西。在大多数情况下,你最好有一个实现可食用、可移动等功能的父代(同样是食物或任何东西)。听起来你在寻找多重继承解决方案,但在大多数情况下,有一个更好的——如果不太明显的话——单一继承解决方案。与另一个答案相同:谢谢你的快速回答!问题是,我希望将Eatable作为一个接口来维护,因为我希望Apple实现它,而不是从它扩展(由于java的多重实现:Eatable、moveable等),接口不能实现方法——至少从java 7开始;Java8很可能会引入for接口。您可能需要重新思考您的设计—继承是将这些行为添加到对象中的最合适的方法吗?