在一个类的内部定义一个类即为内部类
(1)、内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号 。
(2)、内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的 。
(3)、内部类声明成静态的,就不能随便的访问外部类的成员变量了,此时内部类只能访问外部类的静态成员变量 。
内部类最大的好处就是他可以自由的访问外部类的成员变量,无论是否是private的 ,下面以程序例子来进行说明它的好处。
class Outer {private int a = 10;/* 为什么要使用内部类,它可以访问外部类的私有属性 */class Inner {public void printInfo(){System.out.println("a = "+a);/* 直接访问a这个私有成员 */}}
}public class InnerDemo {public static void main(String args[]) {/* 内部类定义 */Outer o = new Outer();//先实例化一个外部类对象,不先实例外部类,内部类就使用不了其中的成员变量Outer.Inner i = o.new Inner();//再实例化一个内部类对象i.printInfo();//然后调用}
}
那么这里可能会觉得麻烦,需要先实例一个外部类,再去实例化一个内部类,能不能直接实例化内部类呢,可以的,在内部类前加上关键字 static 即可,但它有限制