什么是内部类呢?在一个类里面定义了另一个类,我们就把前者称为外部类,后者称为内部类。
内部类也是有分类的,我们先来看看静态的内部类,使用static
修饰的内部类我们称为静态内部类。我们可以通过外部类类名.内部类类名 ()= new 外部类类名.内部类类名()
实例化静态内部类对象。
在静态内部类里,不可以直接访问外部类的非静态成员,实例化后可以通过外部类类名.成员
在内部类中使用。
外部类中,可以访问静态内部类中所有的成员。
没有用static
修饰的内部类,我们称为实例内部类,他的使用规则又是怎样的呢?
因为当外部类加载的时候,实例内部类不会加载,所以不可有static
修饰的变量,那为什么pulbic static final
没有报错呢?因为final
修饰的变量可以看作常量,而实例内部类当中允许常量的存在。那实例内部类如何实例化对象呢?我们需要先实例化外部类,在通过外部类实例化内部类。
这样比较麻烦,所以我们经常使用静态内部类。
定义在外部类的方法中的类,叫做局部内部类。
1、局部内部类只能在定义他的方法体内使用
2、不可以被public、static等修饰符修饰
这样的使用方法很鸡肋,我们在实际的开发中很少使用,这里简单介绍一下就可以了。
我们仅仅new ClassTest()
并没有指定对象是谁,这样的我们就称为匿名内部类。