理解抽象类和方法并正确覆盖它们

iaa*_*acp 0 java inheritance abstract-class abstract-methods

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

public abstract class Answer {

abstract public void display();

abstract public Answer getAnswer();

abstract public boolean isEqual();

}
Run Code Online (Sandbox Code Playgroud)

现在在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;
}
}
Run Code Online (Sandbox Code Playgroud)

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

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

Lou*_*man 7

你没有.你修复了你的设计.

我怀疑你可能想要的东西是什么样的

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

public class StringAnswer extends Answer<String> {
  public String getAnswer() { ... }
}
Run Code Online (Sandbox Code Playgroud)