java - 类构造函数中调用的接口(interface)方法

标签 java

谁能在下面的例子中解释一下为什么接口(interface)方法在类构造函数中作为参数传递时可以直接调用?我尝试在 Java 语言规范中搜索规则,但找不到。

public interface Interface {
    public void foo();
}

public class Main {
    public Main() {}
    public Main(Interface obj) {obj.foo();}
    public static int test() {return 123;}
}

最佳答案

只是一种多态行为,Java 期望实现该接口(interface)的方法。 这意味着,任何实现该方法的类都是一个 Interface,因此您可以拥有该方法的许多不同实现。 比方说:

public class ImplementedInterface implements Interface
{
    public void foo()
    {
        System.out.println("Hey!, i'm implemented!!");
    }
}

所以当你打电话时:

Interface aux = new ImplementedInterface();
Main m = new Main(aux);

文本“嘿!我实现了!!”将被打印出来。

关于java - 类构造函数中调用的接口(interface)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17480117/

相关文章:

Java Applet 随机存取存储

java - 在 Glassfish 上部署后,在 META-INF/lib 中找不到类,尽管所有 jar 都在那里

java - 在 Azure AD 中生成用于 SSO 的 IDP 证书

java - 国际象棋分层问题

java - httpclient、DefaultHttpClient、HttpPost、BasicNameValuePair、NameValuePair 已弃用

java - 复利计算器没有给我正确的数据?

java - 无法从 C 代码对 Java getter 进行 JNI 调用

java - NetBeans 右键单击​​上下文菜单闪烁,消失

java - 编译错误 “cannot find symbol”

java - 通用 key 池出厂设置参数