对于我的 Java 类,我们正在学习接口(interface)、多态性、继承等。
我正在做的家庭作业是一个内存游戏,你有成对的牌面朝下,你一次翻开两张来寻找匹配项。如果它们匹配,它们将保持可见,如果它们不匹配,卡片将翻过来,您再选择两张卡片。
目前我的设计如下:
public interface Hideable
public abstract void hide();
public abstract void show();
public interface Speakable
public abstract String speak();
public interface AnimalCard extends Hideable, Speakable
public abstract boolean equals(Object obj);
public class Animal implements AnimalCard
public void hide() { ... }
public void show() { ... }
public boolean equals(Object obj) { ... }
// What do I do for the speak method since a generic Animal
// can't speak, but I have to provide a definition since the
// Animal class is implementing the interfaces.
public class Puppy extends Animal
// Here is where I need to define the speak method.
public String speak() { ... }
我的问题在上面的评论中。我觉得我在 speak() 方法方面的实现不正确。
最佳答案
只需将 Animal
类设为抽象
即可。
具体类必须实现 speak()
,或者本身是抽象
。
public class abstract Animal implements AnimalCard {
public void hide() { ... }
public void show() { ... }
public boolean equals(Object obj) { ... }
在 Animal
中为 speak()
声明一个抽象
方法没有必要也没有值(value)——该方法由类层次结构隐含。
关于java - 如何实现一个没有定义所有抽象方法的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13186240/