class Outer {
private static int size;//静态变量
public class Inner {
private int size;
public void doStuff(int size) {
size++; // 存取局部变量
this.size++; // 存取其内部类的成员变量
Outer.this.size++; // 存取其外部类的成员变量(可以是静态变量)
System.out.println(size + " " + this.size + " " + Outer.this.size);
}
}// 内部类Inner结束
public void testInner() {/** 类Outer中定义的实例方法testInner()方法 */
Inner i = new Inner();
i.doStuff(5);}
public static void main(String[] a) {
Outer o = new Outer();
o.testInner();
}}// 类Outer结束
例2:
import java.awt.* ;
import java.awt.event.*;
public class InnerClass{
private Frame f;
private TextField tf;
public InnerClass(){
f=new Frame("Inner classes example");
tf=new TextField(30);
}
public voidi launchFrame(){
Label label=new Label("Click and drag the mouse");
f.add(label,BorderLayout.NORTH);
f.add(tf,BorderLayout.SOUTH);
f.addMouseMotionListener(new MyMouseMotionListener());/*参数为内部类对象*/
f.setSize(300,200);
f.setVisible(true);
}
class MyMouseMotionListener extends MouseMotionAdapter{ /*内部类开始*/
public void mouseDragged(MouseEvent e) {
String s="Mouse dragging: x="+e.getX()+"Y="+e.getY();
tf.setText(s); }
}
public static void main(String args[]) {
InnerClass obj=new InnerClass();
obj.launchFrame();
}
}
如下所示代码为在外部类中定义两个内部类及它们的调用关系:
class Outer } |
内部类InnerOne及InnterTwo只在类Outer的作用域内是可知的,内部类的变量成员只在内部类内部可见, 若外部类或同层次的内部类需要访问, 需采用示例程序中的方法, 不可直接访问内部类的变量.