java内部类详解

1.内部类的作用

1)增强封装,将外部类隐藏在内部类之内,不允许其他类访问

2)提高代码的可读性和可维护性

3 )内部类可以直接访问外部类

内部类编译之后会产生一份单独的字节码文件

2.内部类的分类

外部类 要么使用public修饰要么缺省

内部类 相当于外部类的一个成员,好比字段,那么可以用 public/protected/缺省/private/static修饰

1)实例内部类---没有使用static修饰的内部类

属于外部类的对象,不属于外部类本身

特点:

A.创建实例内部类之前,一定要先创建外部类对象,通过外部类对象来创建内部类对象(当存在内部类对象时,一定存在外部类对象)



B.实力内部类直接拥有外部类的实例(对象)内部类可以直接访问外部类的成员



C.外部类中,不可以直接访问内部类的成员,必须通过内部类的实例对象来访问



D.实例内部类中不能定义静态成员,只能定义实例成员

E.如果实例内部类和外部类拥有相同的字段和方法abc,在内部类中 this.abc 表示访问内部类

outter.this.abc 表示访问外部类



2)静态内部类--用static修饰

A.静态内部类直接属于外部类,不属于外部类的对象,所以不用创建外部类对象,就可以创建内部类对象



B.静态内部类可以直接访问外部类的静态成员,访问非静态成员,要通过外部类的实例对象进行访问

C.测试类可以通过完整的类名调用静态内部类中的静态成员;

eg: outter.inner.test();

3)局部内部类(一般不用)

4)匿名内部类(属于局部内部类,经常使用)

是一个没有名称的内部类,只使用一次。

在javaSE/Android事件中用的比较多,比如:不同的按钮点击之后,有不同的效果,首先选用匿名内部类

new 父类构造器 (参数)或接口

{

代码块

}

注意:匿名内部类,必须且只能继承一个类或实现一个接口

特点:

A.匿名内部类本身没有构造器,调用父类的构造器。

B.匿名内部类可以处理继承之外还可以实现接口



谢谢阅读!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值