专业的JAVA编程教程与资源

网站首页 > java教程 正文

5分钟学会java内部类(中国电子学会等级考试官网入口登录)

temp10 2024-09-27 02:53:38 java教程 6 ℃ 0 评论

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

内部类分为以下四种:

5分钟学会java内部类(中国电子学会等级考试官网入口登录)

  • 静态内部类

  • 匿名内部类

  • 成员内部类

  • 局部内部类

1. 静态内部类

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

经典使用方式:

1) 单例模式

2) 接收json参数

2. 匿名内部类

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

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

经典使用方式:

1)线程使用

3. 成员内部类

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

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

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

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

4. 局部内部类

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

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

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

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表