首页 > 解决方案 > 我应该在一个类中实现所有接口还是为每个类创建一个类?

问题描述

我有一个任务是建立一个自我评估测试评分器。老师给了我们测试接口:

测试接口UML图

和问题界面:

问题界面UML图

来实现,我不知道我是否应该像这样在一个类中实现它们:

public class CQuestion implements IQuestion, IQuestionMultipleChoice,
        IQuestionNumeric, IQuestionYesNo,IQuestionMetadata {}

public class CTest implements ITest,ITestStatistics {}

或者我是否应该为每种问题类型上一堂课。

我尝试了第一种方法,但我得到了错误,因为有同名的方法。

我想尝试第二种方法,但我不知道该怎么做。我知道我必须在测试类中创建一个问题对象,但我不知道是否必须为每种问题类型创建一个对象。

标签: javainterface

解决方案


在测试接口的情况下,我不明白为什么你不能(乍一看),我认为你应该实现这两个接口。

在问题接口的情况下,正如您所发现的,方法签名中存在不兼容性。由于IQuestionMultipleChoice和all extend IQuestionNumeric,您只需要实现前三个中的一个。正如@john-bollinger 在评论中指出的那样,如果您实现三个配音接口之一,则无需实现。IQuestionYesNoIQuestionIQuestion

我认为你也应该实施IQuestionMetaData类似的东西

public class CQuestionYesNo implements IQuestionYesNo, IQuestionMetaData {
... // your code here
}

推荐阅读