1、定义:内部类就是在类中定义的类,当一个类中的成员,作为另外一种事物的时候,这个成员就可以定义为内部类
2、分类:
成员内部类、静态内部类、私有内部类、局部内部类、匿名内部类
3、成员内部类
一个类定义在外部类的成员位置就为成员内部类,它具有类的特点(继承、实现)成员内部类具有成员的特点,被成员修饰符修饰
格式:外部类名.内部类名 对象名 = new 外部类().new 内部类名();
public class Inner_Test {
class inner{
}
}
4、静态内部类
被static修饰的内部类
静态内部类中可以直接使用外部类中静态内容,需要通过外部类对象使用外部类中的成员(因为内部类本身是静态的)
外部类中可以直接通过内部类对象使用内部类成员,可以通过内部类的类名使用内部类静态内容(静态内部类中的静态内容 : 外部类类名.内部类类名.静态内容)
public class Inner_Test {
static class inner{
}
}
5、私有内部类
被private修饰的内部类,只能在当前外部类中通过内部类对象使用
public class Inner_Test {
private class inner{
}
}
6、局部内部类
局部内部类使用时需要注意:
不能被成员修饰符等修饰(public,private,protected,static)
局部内部类中不能定义静态内容,除了静态常量
局部内部类中可以直接使用外部类成员,可以使用所在方法中的局部变量
局部内部类只能在当前所在的方法中通过内部类对象使用,其他位置无法使用
在局部内部类中使用了所在方法中的局部变量,这个局部变量会默认被final修饰
public class Inner_Test {
public void test() {
class inner{
}
}
}
7、匿名内部类
匿名内部类是没有访问修饰符的
使用匿名内部类时,这个new之后的类首先是要存在的,其次我们要重写new后的类的某个或某些方法
匿名内部类访问方法参数时也有和局部内部类同样的限制
匿名内部类没有构造方法
作用: 用来简化没有本身自己作用的实现类