多语言展示
当前在线:739今日阅读:99今日分享:20

深入分析java内部类(一)

内部类就是定义在一个类的内部的类,那么内部类有什么特性呢,又有哪些使用场景呢
工具/原料

java,eclipse

方法/步骤
1

下面是一个简单的内部类实例,当我们在ship()方法里面使用内部类的时候,与使用普通类没有什么不同

2

但是如果我们想从外部类的非静态方法之外的任意位置创建某个内部类对象,那么还能直接创建吗?答案肯定是不能,我们必须具体指明这个类型的对象方法:OutClassName.InnerClassName,如下:

3

内部类可以访问其外围对象的所有成员(包括私有的,这一点和普通类是不同的),而且不需要任何特殊条件

4

这是如何做到的呢?这是因为当某个外围类的对象创建了一个内部类对象时,编译器会自动为该内部类创建一个指向其外部类的引用,我们可以反编译之后可以看到,内部类的构造器会自动有对外部类的引用,如下:

5

那么,假如我们自己去强制重写内部类的构造器呢,这时候又会发生什么呢?如下这个例子可以看出,即使我们重写了内部类的构造器,加上了参数,编译器仍然会在我们重写的构造器加上对外部类的引用

推荐信息