java中外围类是什么,java中为何需要内部类

本文探讨了Java中的内部类及其用途,强调了内部类如何提供进入外围类的窗口,实现多重继承的效果。内部类可以独立继承接口,即使外围类已经实现了接口,仍能保持其独立性。此外,内部类的特点还包括独立的状态信息、多个实例、灵活的接口实现和非依赖外围类的创建时机。同时,内部类作为闭包的概念,能够捕获并操作外部作用域的信息,使得回调机制更为强大。
摘要由CSDN通过智能技术生成

java中为什么需要内部类

一般来说,内部类继承自某个类或者实现某个接口,内部类的代码操作创建它的外部类的对象。所以可以认为内部类提供了某种进入其外围类的窗口。

内部类必须要回答的一个问题是: 如果只是需要一个对某个接口的引用,那么为什么不直接通过外围类实现这个接口呢?答案是:如果这样能满足需求,就应该这样做。那么内部类实现一个接口与外围类实现这样一个接口有什么区别呢?答案是:后者不能总是享用到使用接口带来的方便,有时需要用到接口的实现。所以,使用内部类最吸引人的原因是:

每个内部类都能独立的继承自一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对内部类都没有影响。

从这个角度看,内部类使得多重继承的方案变得完整

。接口解决了部分问题,而内部类有效的实现了“多重继承”。也就是说,内部类允许继承多个非接口类型(类或者抽象类)。

使用内部类还可以获得其他一些特性

1. 内部类可以有多个实例,每个实例都有自己的状态信息,并且与外围类对象的信息相互独立。

2. 在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或继承同一个类。

(e.g. 如果Sequence.java 不使用内部类,就必须声明 “Sequence.java是一个Selector”,对于某个特定的Sequence只能有一个Selector。而使用内部类可以给这个Sequence提供不同的Selector)

3. 创建内部类对象的时刻并不依赖于外围类对象的创建。

4. 内部类并没有令人迷惑的 “is-a”关系;它就是一个独立的实体。

闭包与回调

闭包是一个可调用的对象,它记录了一些信息,这些信息来自于创建它的作用域。通过这个定义可以看出内部类是面向对象的闭包,因为它不仅包含外部类对象(创建内部类的作用域)的信息, 还自动拥有一个指向此外围类对象的引用,在此作用域内,内部类有权操作所有的成员,包括private成员。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值