内部类

Posted zdf-2315033625

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内部类相关的知识,希望对你有一定的参考价值。

我们已经知道,在类内部可以定义成员变量与方法。在java中,还可以在类的内部定义类。这种在类的内部定义的类,称为内部类。内部类所在的类称为外部类。

java中的内部类可以分为四种,分别是:静态内部类,成员内部类,局部内部类,匿名内部类。

静态内部类:作为类的静态成员,存在于某个类的内部。

成员内部类:作为类的成员,存在于某个类的内部。

局部内部类:存在于某个方法内部的类。

匿名内部类:存在于某个类的内部,但是无类名的类。

1.静态内部类

静态内部类的定义方法如下:

class outer

  static class Inner

 

这里,Inner类存在于Outer类的内部,作为Outer的静态成员。由于静态成员可以在不创建类的情况下被使用,因此,我们可以不创建Outer类的对象,而直接引用Inner类。

静态内部类虽然是外部类的成员,但是在未创建外部类的对象的情况下,可以直接创建静态内部类的对象。此外,静态内部类可以引用外部类的静态成员变量和静态方法,但是不能引用外部类的普通成员。例如,如果在静态内部类中引用外部类的普通成员,就会出现编译错误。

2.成员内部类

成员内部类的定义方法如下:

class outer

  class Inner

 

这里,Inner类存在于Outer类的内部,作为Outer的成员。与静态内部类不同的是,Inner类定义时没有static修饰符,同时,只有创建了Outer类的实例对象后,才能使用Inner类的对象。

成员内部类可以调用外部类的所有成员。但是只有创建了外部类的对象后,才能引用外部的成员。

3.局部内部类

局部内部类是在类的方法内部定义的类。局部内部类只能在方法内部中使用。一旦方法执行完毕,局部内部类就会从内存中被清除。

必须注意的是,如果局部内部类中要使用它所在的方法中的局部变量,那么就需要将这个局部变量定义为final的。

4.匿名内部类

匿名内部类是一种特殊的内部类,这种类没有名字。匿名内部类的定于与对象的创建合并在一起,整个动作看起来像产生对象似的。匿名内部类是唯一对象而定义的类。当我们只需要创建一个类的对象,而且用不上它的名字时,使用内部类可以使代码看上去简洁清楚。

匿名内部类一般通过如下形式定义,并且在定义类的同时进行对象实例化。

new 类或者接口的名字()  {

//匿名内部类的主体

new 后面是一个类或者接口,然后是一个大括号。在大括号中是匿名内部类的主体,这个主体就是类或者接口的实现。如果是类,那么匿名内部类是该类的子类。如果是接口,匿名内部类需要完成对接口的实现。

5兄弟类:是指跟本类处于平级的一个类,兄弟类的访问修饰符只能是"默认"因为它跟主类本来就是在同一个文件里不能写成public,protected,private.兄弟类,只能在同一个包下,以及本类范围中可以使用。

final修饰类表示这个类不能被继承。

 

 

  

以上是关于内部类的主要内容,如果未能解决你的问题,请参考以下文章

内部类

内部类

Java内部类详解(含:成员内部类局部内部类匿名内部类静态内部类)

一个java内部类有几个分类?

内部类之静态内部类

java内部类的匿名内部类