在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。
这里首先介绍内部类的基本实例化,包括静态内部类和非静态内部类
public class InnerClassTest {
private int a = 0;
/**
* 内部类
* @author heongkang
*/
public class InnerClassOne{
//可以访问内部类的任意成员变量
int b = a+1;
int constant=4;
}
/**
* 静态内部类
* @author heongkang
*/
private static class InnerClassTwo{
/*只能访问外部类的静态成员变量,这个很简单,因为如果可以访问外部非静态成员的话,就是需要关联对象
而static是非关联对象的
*/
// int c = a+1;//这行代码在ide中是编译不通过的
static private int constant=4;
}
public InnerClassOne countOne (){
return new InnerClassOne();
}
public static InnerClassTwo countTwo(){
return new InnerClassTwo();
}
public static void main(String[] args) {
//因为是非静态内部类,所以好比是该类的一个成员,实例化依赖该类,所以必须对外部类实例化
InnerClassTest object = new InnerClassTest();
InnerClassTest.InnerClassOne one = object.countOne();
//因为是static所有无需关联类,这里和static修饰很相似 可以把静态内部类看作一个成员变量
InnerClassTest.InnerClassTwo two = InnerClassTest.countTwo();
}
}