java中有4种不同的内部类,下面给出类别及例子
1.静态嵌套类
class Outer {
static class Inner {
void go() {
System.out.println("Innerclass reference is: " + this);
}
}
}
public class Test {
public static void main(String[] args){
Outer.Inner n = newOuter.Inner();
n.go();
}
}
2.成员内部类
可以访问外部类的所有方法、成员及this
public class Outer {
private int x = 100;
public void makeInner(){
Inner in = new Inner();
in.seeOuter();
}
class Inner{
public void seeOuter(){
System.out.println("Outer x is" + x);
System.out.println("Innerclass reference is " + this);
System.out.println("Outerclass reference is " + Outer.this);
}
}
public static void main(String [] args){
Outero = new Outer();
Inner i = o.new Inner();
i.seeOuter();
}
}
3、本地方法内部类
public class Outer {
private String x = "outer";
public void doStuff() {
class MyInner {
public voidseeOuter() {
System.out.println("xis " + x);
}
}
MyInner i = new MyInner();
i.seeOuter();
}
public static void main(String[] args){
Outer o = new Outer();
o.doStuff();
}
}
public class Outer {
private static String x = "staticouter";
public static void doStuff() {
class MyInner {
public voidseeOuter() {
System.out.println("xis " + x);
}
}
MyInner i = new MyInner();
i.seeOuter();
}
public static void main(String[] args){
Outer.doStuff();
}
}
4.匿名内部类
普遍用于在GUI应用中给widget添加行为监听
button.addActionListener(newActionListener(){
public void actionPerformed(ActionEvente){
comp.setText("Button has beenclicked");
}
});