java 内部类 匿名类

发布网友 发布时间:2022-04-25 20:43

我来回答

2个回答

热心网友 时间:2022-06-17 06:17

内部类

一个类定义在另外一个类的内部,这个该类就被称为内部类。内部类分为成员内部类(定义在外部类的成员位置)和局部内部类(定义在外部类的方法里面)。
(1)成员内部类
class Outer{class Inner{//成员内部类}}

成员内部类的特点:
1、成员内部类可以直接访问外部类的成员,包括私有的,也可以通过外部类名.this.成员名调用外部成员。
2、外部类访问非静态成员内部类的成员,必须要创建成员内部类对象;外部类可以通过类名直接访问静态内部类的静态成员,包括私有的。
3、成员内部类和外部类不存在继承关系
4、其他类中生成成员内部类的方式:Outer.Inner oi = new Outer().new Inner();
(2)局部内部类
class Outer{public void method(){final int a = 10;class Inner{System.out.println(a);//局部内部类}}}
局部内部类的特点:
1、可以直接访问外部类的成员
2、在局部位置可以创建局部内部类对象,通过对象调用成员
注意:
局部内部类在访问局部变量时,被访问的变量必须用 final 修饰,这是因为局部变量随着方法调用完毕就消失了,而内部类在堆内存中并不会立即消失,所以用 final 修饰,因为被 final 修饰的变量就成了常量,即使局部变量消失了,但数值并不会消失。

热心网友 时间:2022-06-17 06:18

追问能说一下 ,为什么是匿名类吗?
所有匿名类的格式都是这样吗?

追答当你在new的时候在添加或者重写方法,那么就是匿名类,匿名就是隐藏名字的意思。

原本你要重写一个类的方法是需要新建一个类并继承的,既然要新建类,那一定得器个类名吧。和你图片里的代码相对比,是不是省去了这一步,类名不用起了,就是匿名咯。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com