内部类共有三种类型:
1.可以访问外部类作用域的内部类
2.局部内部类-就是定义在方法内的内部类
3.静态内部类-不能访问外部类的内部类
第一类
public class OuterClass{
private boolean status;
public void a(){
new InenerClass().b();
}
public class InnerClass{
public void b(){
if(status){....}
}
}
}
在外部类范围之外调用内部类的语法:
OuterClass outer=new OuterClass();
OuterClass.InnerClass inner=outer.new InnerClass();
第二类–局部内部类
2.1
public void start(){
class TimePrinter implements ActionListener{
public void actionPerformed(ActionEvent event){
...
}
}
}
这里的局部内部类不能用public 或private 修饰,作用域限定于这个局部类的块中。
2.2 匿名内部类–也是在方法内,只是没有名字而已。
public void start(){
new Thread(new Runnable() {
@Override
public void run() {
...
}
}).start();
}
语法是 new superType(){} ;其中superType 可以是类或者接口。
第三类–静态内部类
public class OuterClass{
private boolean status;
public static void a(){
new InenerClass().b(); //依然需要new,即使内部类有static 修饰.这里的static 不是表示静态类,而是表示不能引用外部类的域.
InnerClass.c(); //静态方法则不需要new
}
public static class InnerClass{
public void b(){
...
}
public static void c(){};
}
}
在外部类的范围之外调用静态内部类,不再需要外部类的实例:
OuterClass.InnerClass inner = new OuterClass.InnerClass();