在其他文件中调用Scala类

时间:2019-09-12 00:10:37

标签: java scala oop inheritance

我试图在另一个名为“ DefaultFaqActionHandler”的类中调用“ DefaultFaqActionHandlerClass”。我已经尝试过使用extend,但是我对Scala不太熟悉,所以在执行该操作时遇到了问题。理想情况下,“ DefaultFaqActionHandlerClass”将是基类,然后将“ DefaultFaqActionHandler”作为派生类。请帮忙。

这是我尝试过的方法,但是会引发错误

class DefaultFaqActionHandler extends DefaultFaqActionHandlerClass with ActionTypeHandler {


  val intentResponse: IntentResponse
  val actionTypeRequest: ActionTypeRequest
  implicit val clientPlatform: ClientPlatform


  handleActionType(intentResponse, actionTypeRequest)(clientPlatform : ClientPlatform)

}

这是我想要继承的类。

class DefaultFaqActionHandlerClass  extends ActionTypeHandler{

  override def handleActionType(intentResponse: IntentResponse,
                                actionTypeRequest: ActionTypeRequest)(implicit clientPlatform: ClientPlatform): ActionTypeResponse = {

    ActionTypeResponse(
      responseData = FaqMessageTemplate.getFulfillmentMessage(
        intentName = actionTypeRequest.intentName,
        fulfillmentText = actionTypeRequest.intentFulfillmentText,
        intentParameters = actionTypeRequest.intentParameters,
        userToken = actionTypeRequest.userToken,
        accessToken = actionTypeRequest.accessToken,
        correlationId = Some(actionTypeRequest.correlationId)
      ),
      conversationContext = intentResponse.conversationContext
    )

  }

我遇到错误...

错误:(11,8)类DefaultFaqActionHandler必须是抽象的,

1 个答案:

答案 0 :(得分:2)

您的课程DefaultFaqActionHandler引入了新的抽象成员:

  val intentResponse: IntentResponse
  val actionTypeRequest: ActionTypeRequest
  implicit val clientPlatform: ClientPlatform

它需要为它们提供实现或声明为abstract classtrait。这些是Scala或Java中的规则-非抽象类中不能有抽象成员。抽象只是意味着您必须实现抽象成员才能创建它的实例。

对于您而言,这两个类是在相同文件中还是在不同文件中声明都没有关系。

如果这些抽象成员已经在ActionTypeHandler或其他父类中实现,则不要将它们包含在您的类中或提供它们的完整实现。