gpt4 book ai didi

java - 从 Java 中实现的接口(interface)调用未在接口(interface)中定义的方法

转载 作者:搜寻专家 更新时间:2023-11-01 01:03:48 25 4
gpt4 key购买 nike

我在 Java 中有以下场景。假设我有一个接口(interface)和两个实现该接口(interface)的类。如下:

public interface myInterface {

public String printStuff();

}

public class A implements myInterface {

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


public class B implements myInterface {

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

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

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

public static void main(String... args) {

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

上面的调用代码似乎不起作用。有什么想法吗?

最佳答案

myInterface myinterface = new B();

myinterface 的引用类型是myInterface。这意味着您只能访问接口(interface)中定义的方法。您可以将其强制转换为类型 B 以进行方法调用。

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

示例

MyInterface myInterface = new B();

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

只是对此做个说明

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

额外阅读

你应该阅读引用类型 here , 你应该看看类型转换 here .我的答案是结合对这两件事的理解。

作为补充说明,请查看 Java Naming Conventions .对于任何 Java 开发人员要编写可理解的代码,这是一条重要的信息。

关于java - 从 Java 中实现的接口(interface)调用未在接口(interface)中定义的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21135843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com