在JAVA中,内部类可以分为四种,分别是成员内部类、静态内部类、方法内部类和匿名内部类。
首先来看内部类的创建语法:
外部类.内部类 内部类对象 = new 外部类.内部类();
1.成员内部类
成员内部类不能存在任何static变量和方法,且成员内部类依附于外围类,必须先创建外围类才能创建内部类。
2.静态内部类
静态内部类也就是用static关键字修饰的内部类,它与非静态的内部类之间的最大区别是引用的有无。我们知道非静态内部类编译完成之后会保存着一个引用,该引用指向创建它的外围类,但静态内部类没有,这就意味着:静态内部类的创建不需要依赖外围类。
要注意的是由于有static关键字,所以静态内部类只能访问其外部类的静态属性和方法。
3.方法内部类(不允许使用访问权限修饰符)
方法内部类顾名思义是定义在外部类方法中的类,作用域只在其所在的方法中,出了方法就会失效。此种内部类主要用于解决比较复杂的问题,创建一个临时的类来辅助我们,但又不希望这个类增加程序复杂性。
4.匿名内部类
匿名内部类实际上就是没有名字的方法内部类。但它除了方法内部类的那些约束以外还有一些地方需要注意:
(1)匿名内部类必须继承一个抽象类或实现一个接口
(2)匿名内部类中不能存在任何静态类成员或方法