Java中内部类

103 阅读1分钟

1.静态类与非静态类是内部类的区分,外部类不可以被static修饰。

2.类的加载过程:类只有被使用才会被类加载器加载,加载后类的信息放在元空间(方法区)中。类的使用包括初始化对象、静态方法的调用。

3.静态内部类与普通内部类的区别: 

         静态内部类
可以访问外部类的静态数据
不能访问外部类的成员数据

                  构造方法可以传空,不必持有外部类对象

         非静态内部类

                  可以访问外部类的任何数据

                  构造方法默认持有外部类的对象,只能通过外部类的对象来调用它的构造方法

4.除了普通内部类和静态内部类,也可以定义局部内部类,即在方法内部定义类。也可以定义匿名内部类,配合接口的使用。

5.匿名内部类和lambda表达式的区别:

        匿名内部类编译后会生成类似LambdaTest$1.class的类,lambda表 达式编译时不会生成真正的类

6.kotlin中内部类的表达:

        默认没有任何修饰的类属于静态内部类

        添加inner修饰的是普通内部类