我有一个名为 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/