什么是内部类?
- 理解:简而言之就是在类的内部创建一个类,内部类持有对外部类成员(属性,方法)的直接访问权
内部类的四大种类
一、成员内部类
1.访问:外部类.内部类 对象=new 外部类.内部类();
2.调用:对象.方法名();
3.理解:
1.要想有内部类(对象),必须先有外部类(对象)
2.内部类持有对外部类对象的引用
3.外部类的作用可以理解为包,它的作用相当于包
- 注意:内存泄漏(解决方案:先将内部类置为空/静态的)
二、静态内部类
- 理解:可以理解为全局
1.不需要有外部类对象(随着类的加载而加载,即使没有对象,它的属性仍在方法区中)
2.不能访问外部类的非静态成员
3.如果内部类中有静态方法,那么这个内部类一定是静态的
三、匿名内部类
1.语法:new 父类({重写父类已实现的方法});
2.注意:
1.没有抽象方法的抽象类(例:Type type=new Type(){};)
2.开发中最常见
3.没有构造方法
四、局部内部类
- 含义:写在方法中的类
- 注意:
1.一般来说,需要返回对象。之后想调用几次,什么时候调用都可以
2.局部内部类访问方法中的变量时,需要将变量定义成final的(变量名要大写),否则会导致内部类不能访问局部变量,因为不是final修饰的变量会随着方法的结束从桟内存中消失
3.很像闭包(javascripe) 内部类访问外部类对象Inner.this,Outer.this.class