内部类介绍

内部类介绍

(1)把类定义在另一个类的内部,该类就被称为内部类。

举例:把类B定义在类A中,类B就被称为内部类。

(2)内部类的访问规则

1、可以直接访问外部类的成员,包括私有

2、外部类要想访问内部类成员,必须创建对象

(3)内部类的分类

1、成员内部类

2、局部内部类

3、匿名内部类

(4)成员内部类访问规则

成员内部类不是静态的:外部类名.内部类名 对象名 = new 外部类名().new 内部类名();

成员内部类是静态的:外部类名.内部类名 对象名 = new 外部类名.内部类名();

(5)局部内部类

1、局部内部类访问局部变量必须加final修饰。

2、为什么呢?

因为局部变量使用完毕就消失,而堆内存的数据并不会立即消失。所以,堆内存还是用该变量,而该变量已经没有了。为了让该值还存在,就加final修饰。通过反编译工具我们看到了,加入final后,堆内存直接存储的是值,而不是变量名。

(6)匿名内部类(掌握)

1、是局部内部类的简化形式

2、前提存在一个类或者接口

3、格式:new 类名或者接口名() {重写方法;}

4、本质:其实是继承该类或者实现接口的子类匿名对象

内部类分类

1. 静态内部类:

1. 静态内部类本身可以访问外部的静态资源,包括静态私有资源。但是不能访问非静态资源,可以不依赖外部类实例而实例化。

2. 成员内部类:

1. 成员内部类本身可以访问外部的所有资源,但是自身不能定义静态资源,因为其实例化本身就还依赖着外部类。

3. 局部内部类:

1. 局部内部类就像一个局部方法,不能被访问修饰符修饰,也不能被static修饰。

2. 局部内部类只能访问所在代码块或者方法中被定义为final的局部变量。

4. 匿名内部类:

1. 没有类名的内部类,不能使用class,extends和implements,没有构造方法。

2. 多用于GUI中的事件处理。

3. 不能定义静态资源

4. 只能创建一个匿名内部类实例。

5. 一个匿名内部类一定是在new后面的,这个匿名类必须继承一个父类或者实现一个接口。 .

6. 匿名内部类是局部内部类的特殊形式,所以局部内部类的所有限制对匿名内部类也有效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值