Java之内部类(1) - 为什么需要内部类
2014-09-10 20:59
148 查看
为什么需要内部类
一般来说,内部类继承自某个类或实现某个接口,内部类的代码操作创建它的外围类的对象。所以可以认为内部类提供了某种进入其外围类的窗口。
内部类必须要回答的一个问题是:如果只是需要一个对接口的引用,为什么不通过外围类实现那个接口呢?答案是:“如果这样能满足需求,那么就应该这样做。” 那么内部类实现一个接口与外围类实现这个接口有什么区别呢?
答案是:后者不是在那个能享用到接口带来的方便,有时需要用到接口的实现。所以,使用内部类最吸引人的原因是:
每个内部类都能独立地继承自一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类没有影响。
如果没有内部类提供的、可继承多个具体的或抽象的类的能力,一些设计与编程问题就很难解决。从这个角度看,内部类使得多重继承的解决方案变得完整。接口解决了部分问题,而内部类有效地实现了“多重继承”。也就是说,
内部类允许继承多个非接口类型(类或抽象类)。
情景1:必须在一个类中以某种方式实现两个接口。由于接口的灵活性,可以有2种方式实现:使用单一类,或者使用内部类
View Code
内部类还有一些其他特性:
1.内部类可以有多个实例,每个实例都有自己的状态信息,并且与其外围类对象的信息相互独立。
2.在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或继承同一个类。
3.创建内部类对象的时刻并依赖于外围类对象的创建
4.内部类并没有令人迷惑的“is-a” 关系,它就是一个独立的实体。
一般来说,内部类继承自某个类或实现某个接口,内部类的代码操作创建它的外围类的对象。所以可以认为内部类提供了某种进入其外围类的窗口。
内部类必须要回答的一个问题是:如果只是需要一个对接口的引用,为什么不通过外围类实现那个接口呢?答案是:“如果这样能满足需求,那么就应该这样做。” 那么内部类实现一个接口与外围类实现这个接口有什么区别呢?
答案是:后者不是在那个能享用到接口带来的方便,有时需要用到接口的实现。所以,使用内部类最吸引人的原因是:
每个内部类都能独立地继承自一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类没有影响。
如果没有内部类提供的、可继承多个具体的或抽象的类的能力,一些设计与编程问题就很难解决。从这个角度看,内部类使得多重继承的解决方案变得完整。接口解决了部分问题,而内部类有效地实现了“多重继承”。也就是说,
内部类允许继承多个非接口类型(类或抽象类)。
情景1:必须在一个类中以某种方式实现两个接口。由于接口的灵活性,可以有2种方式实现:使用单一类,或者使用内部类
package tools; class D {} abstract class E {} class Z extends D { E makeE(){return new E(){};} } public class InnerClass { static void takesD(D d){} static void takesE(E d){} public static void main(String[] args) { Z z = new Z(); takesD(z); takesE(z.makeE()); } }
View Code
内部类还有一些其他特性:
1.内部类可以有多个实例,每个实例都有自己的状态信息,并且与其外围类对象的信息相互独立。
2.在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或继承同一个类。
3.创建内部类对象的时刻并依赖于外围类对象的创建
4.内部类并没有令人迷惑的“is-a” 关系,它就是一个独立的实体。
相关文章推荐
- 【Thinking in Java笔记】为什么需要内部类
- 牛客网Java刷题知识点之什么是内部类、为什么要使用内部类、内部类如何使用外部类的属性和方法、成员内部类、局部内部类、静态内部类、匿名内部类
- 从头认识java-8.11 为什么需要内部类?
- java为什么需要内部类
- java中为什么需要内部类?
- Java 为什么需要内部类
- 为什么Java匿名内部类访问的外部局部变量或参数需要被final修饰
- Java为什么匿名内部类参数引用需要用final进行修饰?
- 从头认识java-8.11 为什么需要内部类?(2)
- Java基础-内部类-为什么成员内部类可以无条件访问外部类
- Java方法内部类为什么需要方法形参或变量是final的?
- 为什么写Java程序需要接口
- Java开发为什么需要UML
- Java中的内部类 普通嵌套类 局部内部类 匿名内部类 静态内部类 浅析
- Java为什么要使用内部类?
- 为什么写Java程序需要接口
- java 内部类和内部静态类
- 为什么需要内部类?
- 《Java编程思想》之为什么需要内部类?
- 《Java编程思想》之为什么需要内部类?