内部类 $表示内部类
实现接口的类的安全性大大提升
import java.awt.*;
import java.awt.event.*;
public class TestFolwLayout {
public static void main(String[] args) {
new TestFolwLayout().launch();
}
public void launch() {
Frame f = new Frame("BorderLayout");
Button bn = new Button("BN");
f.add(bn);
bn.addActionListener(new MyListener());
f.setSize(200,200);
f.setVisible(true);
}
class MyListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Hello");
}
}
}
内部类小特性:
内部类被编译生成的字节码文件名字会改变:外部类名$内部类名
匿名内部类
不想产生多余的监听器类对象:
之所以能产生n个监听器类对象,是因为定义了监听器类
解决:如果只生成一个监听器接口对象,就不需要单独定义监听器类
语法:
事件源.add监听器接口(new 监听器接口() {})
import java.awt.*;
import java.awt.event.*;
public class TestListener {
public static void main(String[] args) {
Frame f = new Frame("BorderLayout");
Button bn = new Button("Bn");
f.add(bn);
bn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Hello");
}
});
f.setSize(200,200);
f.setVisible(true);
}
}