自动调用已实现的方法?

Calling on an implemented method automatically?

我很好奇 implements 关键字是如何工作的,我希望有人能向我解释一下,实现的方法在哪里被调用?

例如,假设我有一个实现了 ActionListener 的 class。它现在实现了

public void actionPerformed(ActionEvent e) {
}

方法。我有一个绑定到此 ActionListener 的按钮。但是它是如何调用这个方法的呢?它怎么知道我的 class 实现了这个方法。

它知道您的 class 实现了侦听器,因为 addActionListener(...) 方法的参数只接受实现 ActionListener 接口的 classes。它调用该方法是因为在 AbstractButton 的内部结构中,它知道其 List 中包含这些侦听器的所有对象都实现了 ActionListener 接口,因此具有 actionPerformed 方法。有关更多详细信息,请考虑查看 AbstractButton 的源代码,您会确切地看到它在哪里执行此操作。如果磁盘上还没有 src.zip 文件,Google 可以帮助您找到来源。

这在Java中叫做"dynamic binding"。您可以在此处阅读详细信息,例如 http://www.studytonight.com/java/dynamic-method-dispatch.php