> 设计
详述内部类(内部类怎么写)
导语:内部类简介
1.普通内部类
编译生成Outer$Inner.class, 其持有外部类引用的构造函数,间接说明成员内部类依赖于外部类,普通内部类是外部类的一个成员,其不能定义静态属性及方法。
普通内部类方法内访问同名变量,x,this.x,Outer.this.x
普通内部类可被继承,即可继承其他类
Outer.Inner inner = new Outer().new Inner()
2.静态内部类
静态内部类没有持有外部类引用,外部类可以看作是其一层包名,只能访问外部类静态属性
Outer.Inner inner = new Outer.Inner()
3.局部内部类
方法内的内部类
编译生成Outer$1Inner.class
4.匿名内部类
直接继承或实现一个类,没有定义类名就直接使用的内部类
编译生成Outer$1.class局部内部类和匿名内部类只能访问局部final变量
编译生成局部内部类和匿名内部类时,编译器会通过构造器传参的方式优化其所需的变量环境,所需的环境变量有:外部类引用,方法参数,方法的局部变量,且这些变量都是final修饰的,解决数据一致性。
如果局部变量的值在编译期间就可以确定,则直接在匿名内部里面创建一个拷贝。如果局部变量的值无法在编译期间确定,则通过构造器传参的方式来对拷贝进行初始化赋值。
本文内容由小梓整理编辑!