内部类分为四种:
1.成员内部类
成员内部类与成员变量相似,直接在类里写。
public class OutClass {//外部类
String name;
class innerClass{//内部类
}
}
2.静态内部类
静态内部类就是在成员内部类前面加了static,声明为static的类不会持有外部类的引用,可以通过软引用的方法保存外部类的引用,只有静态内部类不可能造成内存泄漏。
public class OutClass {//外部类
String name;
static class innerClass{//内部类
}
}
3.局部内部类
局部内部类是定义在一个方法或一个作用域里的类
public class OutClass {//外部类
String name;
public String getName() {
class innerClass1{//局部内部类
String name1;
}
return name;
}
static class innerClass{//内部类
}
}
4.匿名内部类
一个没有名字的类,是内部类的简化写法,在只使用一次的时候就可以使用匿名内部类
Test1 a = new Test1() {
@Override
void fun() {
}
};
内部类的对象
1.实例内部类对象:
OutClass.innerClass i = new OutClass().new innerClass();
2.静态内部类对象:
OutClass.innerClass i = new OutClass.innerClass();
总结:静态内部类仅能指向当前对象的类。
内外部类的修饰符
1)外部类的修饰符只能有两个:public 或者 默认;
2)内部类的修饰符可以有多个;