java - 我应该在一个类中实现所有接口还是为每个类创建一个类?
问题描述
我有一个任务是建立一个自我评估测试评分器。老师给了我们测试接口:
和问题界面:
来实现,我不知道我是否应该像这样在一个类中实现它们:
public class CQuestion implements IQuestion, IQuestionMultipleChoice,
IQuestionNumeric, IQuestionYesNo,IQuestionMetadata {}
public class CTest implements ITest,ITestStatistics {}
或者我是否应该为每种问题类型上一堂课。
我尝试了第一种方法,但我得到了错误,因为有同名的方法。
我想尝试第二种方法,但我不知道该怎么做。我知道我必须在测试类中创建一个问题对象,但我不知道是否必须为每种问题类型创建一个对象。
解决方案
在测试接口的情况下,我不明白为什么你不能(乍一看),我认为你应该实现这两个接口。
在问题接口的情况下,正如您所发现的,方法签名中存在不兼容性。由于IQuestionMultipleChoice
和all extend IQuestionNumeric
,您只需要实现前三个中的一个。正如@john-bollinger 在评论中指出的那样,如果您实现三个配音接口之一,则无需实现。IQuestionYesNo
IQuestion
IQuestion
我认为你也应该实施IQuestionMetaData
类似的东西
public class CQuestionYesNo implements IQuestionYesNo, IQuestionMetaData {
... // your code here
}
推荐阅读
- jquery-ui - Jquery Autocomplete 错误 menuselect 和 menufocus 无法读取未定义的属性值
- ios - iOS 使用 Agora 语音通话加入和离开频道时状态栏显示为红色
- php - 在php中进行求和时如何处理空值
- python - Runtime.ImportModuleError:无法导入模块“lambda_function”:没有名为“httplib2”的模块
- laravel - 如何在laravel中显示具有yajra数据表多对多关系的数据?
- hadoop - 为什么 cloudera 5.12 vm 中的默认复制因子为 1,而在以前的版本中为 3?
- swift - 向现有项目添加共享扩展。所以已经存在的项目 pod 开始出现错误
- python - 如何将字体标签设置为 Helvetica 并使用 matplotlib 重新设计轴标签文本
- openshift - VMware 上的 Openshift OKD 4.5
- javascript - 将数组数组附加到 FormData 并通过 AJAX 发送