当前位置: 首页 > 面试题库 >

未从Java中已实现的接口在接口中定义调用方法

乜心思
2023-03-14
问题内容

我在Java中有以下情形。假设我有一个接口,以及两个实现此接口的类。如下:

公共接口myInterface {

    public String printStuff();

}

公共类A实现myInterface {

    @Override
    public String printStuff(){
        return "Stuff";
    }

}

公共类B实现myInterface {

    @Override
    public String printStuff(){
        return "Stuff";
    }

    public String printOtherStuff(){
        return "Other Stuff";
    }

}

如果定义如下,如何调用上面的printOtherStuff方法:

public void Main(){

         myInterface myinterface = new B();
         String str = myinterface.printOtherStuff(); // ? This does not work
}

上面的调用代码似乎无效。有任何想法吗?


问题答案:
myInterface myinterface = new B();

的参考类型myinterfacemyInterface。这意味着您只能访问接口中html" target="_blank">定义的方法。您可以将其强制类型转换B以进行方法调用。

注意 :从现在开始,我将使用正确的命名约定。

MyInterface myInterface = new B();

String str = ((B)myInterface).printOtherStuff();

只是一个注意事项

如果需要这样做,则需要了解您的类设计。interface以这种方式使用an的想法是从对象的具体实现的细节中抽象出来。如果您必须执行这样的显式转换,则可能需要研究更改接口以容纳必要的方法,或者更改类以将方法移至全局位置(例如util文件或其他内容)
)。

额外阅读

您应该在这里阅读引用类型,并在这里看看转换。我的答案是对这两个方面的理解的结合。

作为补充,请看一下Java命名约定。对于任何Java开发人员来说,这都是制作重要代码的重要信息。



 类似资料:
  • 问题内容: 我有一个由接口定义的类 我怎样才能调用anotherMethod? 我只想在实现中定义一些方法,因为在我的生产代码中,Test接口涵盖了相当广泛的类,并由多个类实现。我使用在实现中定义的方法来设置单元测试中DI框架未涵盖的依赖项,因此方法在实现之间会有所不同。 问题答案: 问题在于以下行: 这告诉编译器忘记新对象是TestImpl并将其视为普通的旧Test。如您所知,Test没有ano

  • 问题内容: 我有一个定义方法的接口。我有一个 实现 此接口的结构。在其中,我已经从该接口实现了方法,并且还定义了其他方法。 例如: 在操场上:https : //play.golang.org/p/B1GgoNToNl_l 在此,WagTail()不是Animal接口的一部分,但属于Dog结构。运行此代码会出现错误 dog.WagTail未定义(动物类型没有字段或方法WagTail)。 有没有一种

  • 我是Spring Boot的新手,所以我有几个基本问题。 当我们定义一个扩展JpaRepostory的Repostory接口时 这些方法可以从 Service 类调用(我们可能甚至不需要提及这两个方法)。到目前为止,一切都很好。 问题: > 方法是如何定义的?它在幕后是如何被称为的? 如果我们想用原生SQL添加一个自定义方法< code>findUserAction呢?在这种情况下,我们需要在<

  • 本文向大家介绍Java接口定义与实现方法分析,包括了Java接口定义与实现方法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java接口定义与实现方法。分享给大家供大家参考,具体如下: 在java中,我们可以通过继承得到另一个类中的方法,但是这个仅仅满足继承一个方法,那有办法可以多个继承不,就好比,我们人类的基因,总有一部分是继承爸爸,一部分是继承妈妈,而java中有是单继承,那我们

  • 为了测试它,我创建了一个新的控制器,以避免干扰我正在工作的控制器TesteController2,它运行良好。因此,我的下一步是扩展IStudentRepository中的ICustomRepository,在TesteController2中进行更改,然后Spring将不再找到我的findCustom方法,它尝试将该方法创建为JPA关键字并返回和错误。这是我的存储库接口: 和TesteContr

  • 我最近开始在一个项目中使用MapStruct映射工具。过去,为了映射DTO->实体,反之亦然,我使用自定义映射器,例如: 在尝试获取一个可选对象时,我可以通过以下方式将实体映射到dto: 目前,正如我之前提到的,我使用的是mapStruct,问题是我的映射器是这样的,而不是类,它是这样的接口: 我想知道是否可以在stream gentle中使用这个接口方法来映射我的值,而不需要包装值,比如: 谢谢