内部类可以分为4种:
(1)静态内部类。
使用static修饰的内部类,在外部类加载的时候随之加载。它隶属于外部类,使用起来相当于一个独立的外部类。由于它是静态的,故无法访问外部类的非静态成员。
class Outter{
static class Inner{
…………
}
}
(2)成员内部类
它需要等外部类创建了对象以后才会被加载到JVM中,是隶属于外部类的具体对象,因此它可以访问外部类的静态和非静态成员。
class Outter{
class Inner{
…………
}
}
创建内部类实例的方法:
Outter o = new Outter();
Outter.Inner i = o.new Inner();
(3)局部内部类
它定义在一个方法的方法体中,往往仅作为方法的短暂使用,只能访问final修饰的局部变量。
public void test(){
class Local{
…………
}
}
(4)匿名内部类
它定义在方法体中,但没有一个具体的名字,具有很大的灵活性,工作本质与局部内部类类似。
public void test(){
new abcInterface(){
public void interMethod(){
…………
}
}