java - 理解抽象类和方法并正确重写它们

标签 java inheritance abstract-class abstract-methods

我有一个名为 Answer 的抽象类。它必须是抽象的,因为假设可以有许多不同类型的答案,例如字符串答案、视频答案、音频答案等。

public abstract class Answer {

abstract public void display();

abstract public Answer getAnswer();

abstract public boolean isEqual();

}

现在在 StringAnswer 中,我想重写这些方法。

public class StringAnswer extends Answer
{
String text;

public StringAnswer(String text)
{
    this.text = text;
}

@Override
public void display()
{
    System.out.println(text);
}

@Override
**public String getAnswer()
{
    return text;
}**

@Override
public boolean isEqual()
{
    // TODO Auto-generated method stub
    return false;
}
}

getAnswer 给我带来了问题,因为我试图返回一个字符串,但它期待一个答案。从抽象意义上讲,我想返回一个答案。然而,StringAnswer 的内容显然是一个字符串。

那么,当它期待答案时,如何将其作为字符串返回?

最佳答案

你不知道。您修复您的设计。

我怀疑你可能想要的是这样的

abstract class Answer<T> {
  public abstract T getAnswer();
}

public class StringAnswer extends Answer<String> {
  public String getAnswer() { ... }
}

关于java - 理解抽象类和方法并正确重写它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12966899/

相关文章:

java - 如何在JXBrowser 4.1中使用网络摄像头界面

java - "The constructor is undefined "错误

java - 为什么我的异常(exception)不起作用

java - 子类和父类(super class)方法

python - 使用 str 为 init 子类化元组

java - 运行错过的 Quartz 作业

java - 理解类成员行为多态性

c++ - 具有参数化构造函数的抽象工厂

Java 未经检查的重写返回类型

xamarin.ios - Xamarin iOS 绑定(bind) - 协议(protocol) - 无法创建抽象类的实例