java类中方法间定义的类称为java的内部类,可以访问其外部类的私有变量和方法。
分类
1. 成员内部类
2. 局部内部类
3. 匿名内部类
4. 静态内部类(定义在类中,任何方法外,用static修饰)
静态内部类
生成一个静态内部类不需要外部类成员。这是静态内部类和成员内部类的区别。静态内部类的对象可以直接生成:Outer.Inner in=new Outer.Inner();而不需要通过生成外部类对象来生成。这样实际上使静态内部类成为了一个顶级类。可以定义私有静态内部类。
静态内部类和非静态内部类的区别:
1. 非静态内部类中不可以声明静态成员变量和静态成员方法。
2. 一般非静态内部类可以随意访问其外部类的成员变量以及方法(包括声明为private的方法);静态内部类只能访问其外部类的静态成员变量和静态成员方法,不能访问非静态成员变量和方法。
3. 在一个类中创建非静态内部类,内部类的实例一定要绑定在外部类的实例中,在一个外部类中定义一个静态的内部类,不需要利用关键字new来创建内部类的实例,也就是说创建静态内部类对象时,不需要其外部类的对象。