内部类三连击:
《内部类详解————匿名内部类》
《内部类详解————局部内部类》
《内部类详解————静态嵌套类》
定义
在方法或某个作用域内的内部类,称为局部内部类。匿名内部类就是一种局部内部类。
实现方式
public class OutterType { public void function() {/** 局部内部类Inner*/class Inner {public void print() {System.out.println("局部内部类...");}}}
}
规则
规则一:局部内部类类似方法的局部变量,所以在类外或者类的其他方法中不能访问这个内部类,但这并不代表局部内部类的实例和定义了它的方法中的局部变量具有相同的生命周期。
注意,如果是定义在一个作用域内的局部内部类,如下的形式:
我们将局部内部类In定义在了一个if条件作用域中,因此,在if之外的部分,尽管没有离开function()方法,就会报编译错误,无法访问到In这个内部类,因此,还是需要广义的理解局部内部类的含义和访问条件,不可片面的理解为仅仅是方法中定义的内部类。
规则二:只能在方法内部,类(局部内部类)定义之后使用,不存在外部可见性问题,因此没有访问修饰符。
规则三:不能在局部内部类中使用可变的局部变量。
规则四:可以访问外围类的成员变量。如果是static方法,则只能访问static修饰的成员变量。
规则五:可以使用final 或 abstract修饰。
综上,就是局部内部类的知识,其实局部内部类的名气远没有匿名内部类的名气大,但是作为一个匿名内部类的父概念,其定义了匿名内部类和普通的局部内部类的概念和特性,因此可以作为匿名内部类的知识补充。
如有疑问,欢迎文末留言。