浅谈内部类

在java语言中,把一个类定义到另一类的内部,在类里面的这个类就叫内部类。内部类分很多种,主要有以下4中:静态内部类(被static修饰的内部类),成员内部类(无static修饰)、局部内部类(定义在代码块内部,作用范围就是其所在代码块)和匿名内部类。

注意:静态内部类不能与外部类有相同的名字,不能访问外部类的非静态变量和非静态方法,可以访问私有类型。

           非静态内部类里不能有静态成员。因为内部类其实就是外部类的一个属性,静态资源是在非静态资源初始化前就分配了空间的。

           局部内部类和局部变量一样,不能被static、public、protected、private修饰,只能访问方法中定义为final的局部变量。

           匿名内部类是一个没有类名的内部类。不使用关键字class、extends、implements,没有构造函数。外部类必须继承其他类或实现其他接口。匿名内部类对的好处是代码更加简洁、紧凑,但带来的问题是易读性下降。他一般应用有GUI图形用户界面编程中实现事件处理等。注意:

          1、匿名内部类不能有构造函数。

          2、不能定义静态成员、方法和类。

          3、不能有public、static、protected、private

          4、只能创建匿名内部类的一个实例。

           5、一个匿名内部类一定是在new的后面

           6、匿名内部内是局部内部类,所以局部内部类的所有限制对其生效。

其实说白了,匿名内部类就是new  interface(){};结构。本身接口是不能直接new的,但是呢却又发现我们在new的时候,接口后面带了一对花括号,那么这个就表示实际上我现在new的是这个接口的实现类。但是发现,这个实现类是没有名字的

 

你可能感兴趣的:(浅谈内部类)