小研究一下内部类的分类及声明:
在类中还可以再定义类,称之为内部类(Inner Class)或内嵌类(Nested Class)。内部类的主要目的,就是对外隐藏类的存在性。
分为四种:成员内部类(member inner class),区域内部类(local inner class),匿名内部类(anonymous inner class),静态内部类(static inner class)。
成员内部类:
public class A
{
private int C=0;
private int D()
{
}
private class B
{
}
}
直接定义在类的内部,B可以使用A的私有变量C和私有方法D;
区域内部类:
public class A
{
private int C=0;
private int D()
{
final int E=0;
class B
{
}
}
}
定义在A的方法中,B可以使用A的私有变量C和私有方法D,以及声明为final的局部变量E,但B不能有修饰符;
匿名内部类
public Interface A;
public class B;
new A()
{
}
new B()
{
}
没有名字,直接重写原接口或类,可调用声明者的局部变量,但必须为final声明;
静态内部类
public class A
{
public static int C = 0;
public static class B
{
}
}
不能调用外部类的非静态方法和变量,调用静态方法或变量时需要使用类名A.C,普通内部类中有外部类的this,但静态类则非也~