Java|java面试之内部类的四种分类以及作用

Java|java面试之内部类的四种分类以及作用

内部类的区分内部类分别有成员内部类、局部内部类、匿名内部类、静态内部类 , 接下来将分别介绍 。
成员内部类【Java|java面试之内部类的四种分类以及作用】1 就是位于外部类成员位置的类 。 与外部类的属性、方法并列 。

2 成员内部类作为外部类的成员 , 可以访问外部类的私有成员或属性 。 (即使将外部类声明为private , 但是对于处于其内部的内部类还是可见的 。 )
3 用成员内部类定义在外部类中不可访问的属性 。 这样就在外部类中实现了比外部类的private还要小的访问权限 。
注意:内部类是一个编译时的概念 , 一旦编译成功 , 就会成为完全不同的两类 。 对于一个名为outer的外部类和其内部定义的名为inner的内部类 。 编译完成后出现outer.class和outer$inner.class两类 。

局部内部类1定义在一个方法或者一个作用域里面的类 。
2 局部内部类中不可定义静态变量 , 可以访问外部类的局部变量(即方法内的变量) , 但是变量必须是final的 。
局部内部类只能在所在的方法体作用域内进行实例化 , 而如果要在所在方法体返回该类 , 就要通过接口向上转型的操作 , 在某些情况下 , 某些业务逻辑需要临时处理 , 这些业务逻辑只在这里使用又可以封装成一个类的话 , 而又没必要重新建个文件 , 所以可以这写一个局部内部类来处理 。 然后 , 在我的记忆中 , java代理模式中有用到局部内部类 , 在方法中直接实现接口 , 返回代理对象 , 简单而又方便 。