您的位置 首页 java

5分钟学会java内部类

内部类,嵌套在另一个类的里面,所以也称为 嵌套类。

内部类分为以下四种:

  • 静态内部类

  • 匿名内部类

  • 成员内部类

  • 局部内部类

1. 静态内部类

静态内部类,在类中用 static 声明的内部类。因为是static,所以不依赖于外围类对象实例而独立存在,静态内部类的可以访问外围类中的所有静态成员,包括private的静态成员。同时静态内部类可以说是所有内部类中独立性最高的内部类,其创建对象、继承(实现接口)、扩展子类等使用方式与外围类并没有多大的区别。

经典使用方式:

1) 单例模式

2) 接收json参数

2. 匿名内部类

匿名内部类是一个没有给定名字的内部类,在创建这个匿名内部类后,便会立即用来创建并返回此内部类的一个对象引用。匿名内部类用于隐式继承某个类(重写里面的方法或实现抽象方法)或者实现某个接口。

匿名内部类和 lambda表达式 有一些联系,对lambda表达式有兴趣的可以参考 《5分钟学会java8的lambda表达式》

经典使用方式:

1)线程使用

3. 成员内部类

定义在类的内部,而且与成员方法、成员变量同级,即也是外围类的成员之一,因此成员内部类与外围类是紧密关联的。这种紧密关联指的是,成员内部类的对象的创建必须依赖于外围类的对象(即没有外围类对象,就不可能创建成员内部类)。因此,成员内部类有以下3个特点:

  • 成员内部类可以访问外围类的所有成员,包括私有成员;

  • 成员内部类是不可以声明静态成员(包括 静态变量 静态方法 、静态成员类、嵌套接口),但有个例外—可以声明 static final的变量, 这是因为编译器对final类型的特殊处理,是直接将值写入 字节码

  • 成员内部类对象都隐式地保存了一个引用,指向创建它的外部类对象;或者说,成员内部类的入口是由外围类的对象保持着(静态内部类的入口,则直接由外围类保持着)

4. 局部内部类

在方法、 构造器 、初始化块中声明的类,在结构上类似于一个 局部变量 。因此局部内部类是不能使用访问修饰符。对于类的全局成员,局部内部类定义在实例环境中(构造器、对象成员方法、实例初始化块),则可以访问外围类的所有成员;但如果内部类定义在静态环境中(静态初始化块、静态方法),则只能访问外围类的静态成员。

局部内部类和匿名内部类在各个方面都是相同的,只是一个定义了名称,一个是匿名。可以相互参考。

最后,成员内部类一般使用较少,因为会引起代码阅读难度;局部内部类在大部分情况下可以使用匿名内部类代替,所以这两种内部类使用频率很少。实际工作中,活用静态内部类和匿名内部类即可。

文章来源:智云一二三科技

文章标题:5分钟学会java内部类

文章地址:https://www.zhihuclub.com/200157.shtml

关于作者: 智云科技

热门文章

网站地图