有一个事件监听对象,要调用另外一个对象中的成员变量,除了用 持有对方引用外,还可以利用内部类去实现。
内部类优势
- 内部类可以方便访问包装类的成员变量(内部类默认拥有外部包装类的引用)
- 内部类可以清楚的组织逻辑结构,防止被其他不应该访问的类进行访问
何时使用内部类
- 该类不允许或不需要其他类进行访问时,该类只访问包装类时
下面是个例子
import java.awt.*;
import java.awt.event.*;
public class TestMath {
public static void main(String[] args) {
new TFFrame().launchFrame();
}
}
class TFFrame extends Frame {
TextField num1, num2, num3;
public void launchFrame() {
num1 = new TextField(10);
num2 = new TextField(10);
num3 = new TextField(10);
Label plus = new Label("+");
Button equal = new Button("=");
MyMonitor bf = new MyMonitor();
equal.addActionListener(bf);
setLayout(new FlowLayout());
add(num1);
add(plus);
add(num2);
add(equal);
add(num3);
pack();
setVisible(true);
}
private class MyMonitor implements ActionListener {
public void actionPerformed(ActionEvent e) {
int n1 = Integer.parseInt(num1.getText());
int n2 = Integer.parseInt(num2.getText());
num3.setText("" + (n1 + n2));
}
}
}
特别注意:在包装类class TFFrame extends Frame
中内部类 private class MyMonitor implements ActionListener
与成员变量、方法缩进是相同的。