例如:
import acm.gui.*;
import acm.program.*;
import java.awt.event.*;
import javax.swing.*;
import acm.graphics.*;
public class TemperatureConverter extends Program {
private IntField fahrenheitField;
public void init() {
fahrenheitField = new IntField(32);
fahrenheitField.addActionListener(this);
}
}
所以假设我知道TemperatureConverter
是 ActionListener
的子类,什么是 fahrenheitField.addActionListener(this);
实际上是什么意思?因为我想“啊,整个屏幕现在显示了我的TemperatureConverter的一个实例”,将它传递给它的fahrenheitField
有什么意义?作为ActionListener
?
最佳答案
不知道你的类(class)是什么,但这应该可以澄清困惑
- 如果
IntField
或其任何父类(super class)声明addActionListener(ActionListener al)
方法,那么您需要向其传递“一个ActionListener
”。 ActionListener
是一个接口(interface)
,因此上一点中的“ActionListener
”是它或其任何一个的任何类父类(super class)实现ActionListener
接口(interface)或其任何子接口(interface)。- 如果“
ActionListener
”类与调用addActionListener
的类相同,则this
关键字引用当前类的实例。
在以下示例中,MyClass
是“一个 ActionListener
”:
类直接实现接口(interface)
class MyClass implements ActionListener
类直接实现子接口(interface)
class MyClass implements SubActionListener interface SubActionListener extends ActionListener
类是直接实现接口(interface)的类的子类
class MyClass extends SuperMyClass class SuperMyClass implements ActionListener
类是直接实现子接口(interface)的类的子类
class MyClass extends SuperMyClass class SuperMyClass implements SubActionListener interface SubActionListener extends ActionListener
在这些示例中,SuperMyClass
是 MyClass
的直接父类(super class),但它可以位于继承层次结构中的任何位置。界面也是如此。
还有一些冗余的实现,例如
class MyClass extends SuperMyClass implements ActionListener
class SuperMyClass implements ActionListener
或其他奇怪的组合。
TemperatureConverter
is a subclass ofActionListener
语义,但类不能是接口(interface)的子类(有趣的是,相反的是,不是真的)。
关于java - 我看到很多object.addActionListen(this),它是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30554315/