内部类有四种:静态内部类,成员内部类,局部内部类,匿名内部类
class outerClass{
static class innerClass{}//静态内部类:不依赖于外部类实例而被实例化,与成员内部类的差别在于:通常的内部类需要在外部类实例化之后才能被实例化,(静态内部类不能和外部类有相同的名字,不能访问外部类的普通成员变量,只能访问外部类的静态成员和静态方法(包括私有类型))
}
class outerClass{
class innerClass{}//成员内部类(普通的内部类):可以自由的引用外部类的属性和方法,无论是静态的还是非静态的,与一个实例绑定在一起,不可以定义静态的属性和方法。只要在外部类被实例化后,这个内部类才能被实例化
}
class outerClass{
public void menberFunction(){
class innnerClass{}//局部内部类:定义咋一个代码块中,作用范围是在所在的代码块中,很少使用 }
}
public class MyFrame extends Frame{//外部类
public MyFrame(){
addWindowListener(new WindowAdater(){//匿名内部类:没有类名的内部类,不使用关键字class、extends、implements、没有构造函数,但是必须继承其他类或者实现接口。好处在于代码变得更加简洁紧凑,易读性比较差,一般会用于GUI
public void windowClosing(WIndowExent e){
dispose();
System.exit(0);
}
}
);
}
}