java - 如何实现一个没有定义所有抽象方法的类?

标签 java class interface polymorphism

对于我的 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/

相关文章:

java - 将 long[] 更改为 Set。错误消息 : The method addAll in the type Collections is not applicable for the arguments (Set<Long>, 长[])

java - 尝试插入 SQLite 时出现 NullPointerException - Android

ios - 尝试从另一个类访问时类中的对象为零

java - 具有相同方法名称的多个接口(interface)

go - Go 中的抽象模式

class - 接口(interface)方法总是虚拟的吗?

java - BufferedReader 似乎只读取文件的最后一行

java - 输出有问题

java - python 文件应该总是包含一个类吗?

c# - 事件始终为 Null,因此无法处理