我很好奇implements
关键字是如何工作的,我希望有人能向我解释,实现的方法在哪里被调用?自动调用实现的方法?
例如,假设我有一个类实现ActionListener
。它现在实现了
public void actionPerformed(ActionEvent e) {
}
方法。我有一个绑定到这个ActionListener
的按钮。但是它如何要求这种方法呢?它如何知道我的类实现了这种方法。
我很好奇implements
关键字是如何工作的,我希望有人能向我解释,实现的方法在哪里被调用?自动调用实现的方法?
例如,假设我有一个类实现ActionListener
。它现在实现了
public void actionPerformed(ActionEvent e) {
}
方法。我有一个绑定到这个ActionListener
的按钮。但是它如何要求这种方法呢?它如何知道我的类实现了这种方法。
这在Java中称为“动态绑定”。您可以在这里阅读详细信息,例如http://www.studytonight.com/java/dynamic-method-dispatch.php
它知道你的类实现了侦听器,因为addActionListener(...)
方法的参数只接受实现ActionListener接口的类。它调用该方法是因为在AbstractButton内部,它知道其List中包含这些监听器的所有对象都实现了ActionListener接口,因此具有actionPerformed方法。有关更多详细信息,请考虑查看AbstractButton的源代码,然后您将看到它的确切位置。如果您还没有磁盘上的src.zip
文件,Google可以帮助您查找源代码。