Java中的四种内部类
内部类,顾名思义 就是在另一个类的内部定义的类。
内部类可以细分为:静态内部类,成员内部类,局部内部类和匿名内部类四种。
他们本质上就是不同类型的类,其区别就是作用范围不同。类定义在哪里,作用范围就是哪里。
Java中常规的类通常是建立在各个包下面,定义这些常规的类时可以选择加public关键字或者不加。加了public就代表这个类可以在本程序任何地方访问,不加则代表只能在这个类所处的包下访问。这个类能被哪些地方访问就代表你这个类的作用范围有多大,常规类的作用范围在整个程序或者某个包下,内部类的作用范围就看他定义在哪里。
静态内部类
静态内部类被static关键字修饰,作用范围也和静态属性一样
他的访问方式和访问外部类的静态属性相同。
静态内部类能够任意访问外部类的静态属性,即使private静态属性。由于他们都在同一作用范围内。
成员内部类
他的定义方式和成员属性相同,怎样定义成员属性就怎样定义成员内部类。
对外来说,通过外部类的对象实例就能访问该对象的成员属性,也能访问该对象的成员内部类。
对内来说,成员内部类能够任意访问外部类的成员属性,即使是private属性
局部内部类
局部内部类是定义在方法里面。
对外来说,只有该方法内能调用局部内部类;
对内来说,局部内部类可以任意访问该方法内的局部变量。
匿名内部类
匿名内部类就是局部内部类的一种简要写法,可以在不声明类的情况下继承其他类并创建对象。
他的作用范围和局部内部类完全一致
内部类
各个内部类的作用范围可以从内往外访问,不能从外往内访问
比如:
局部内部类可以访问静态属性或者静态内部类,但静态内部类访问不了局部内部类
总结
静态内部类的作用范围就像静态属性一样,成员内部类的作用范围就像成员属性一样,局部内部类和匿名内部类的作用范围就像局部变量一样,类定义在哪里,作用范围就在哪里。