搜索
写经验 领红包
 > 设计

详述内部类(内部类怎么写)

导语:内部类简介

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修饰的,解决数据一致性。

如果局部变量的值在编译期间就可以确定,则直接在匿名内部里面创建一个拷贝。如果局部变量的值无法在编译期间确定,则通过构造器传参的方式来对拷贝进行初始化赋值。

本文内容由小梓整理编辑!