1、内部类的唯一好处就是可以访问外部类的私有属性;而外部类要访问内部类中的成员必须要建立内部类的对象。
2、内部类定义在方法中时,可以访问外部类的成员,但是只能访问方法中被final修饰的参数。
3、外部访问:外部类.内部类 内部类对象 = new 外部类().new 内部类();//外部类对象.内部类对象
4、当内部类中定义了静态成员,该内部类必须是static的。被static声明的内部类变成了外部类,但是只能访问外部类中静态成员。(只能在局部访问局部内部类)(静态是成员修饰符,不能修饰局部。所以局部内部类不能定义静态成员。)
(5、内部类可以被私有修饰,内部类在外部类成员位置时。)(外部类绝对不能被私有,没有这种定义)
方法中的内部类能不能访问方法中的局部变量,为什么?
方法中声明内部类,目的只是由外部类来控制内部类的可见性。将一个类放到方法中,并不是限定了这个类的使用范围只是这个方法中。
在编译后,还是会出现外部类、内部类class文件,这就说明内部类是一个独立的个体,它们是单独的两个类,各有各的成员。
那么方法上的内部类当然不能访问方法中的局部变量了,在一个类里面可以通过该类的引用访问该类的成员,但是方法中的局部变量作用范围只是在方法内,无法访问这个变量。
加了final后,编译时内部类会把这个值或者引用复制一份到自己类中,所以就形成了可以访问局部被final修饰的变量的现象。 |