嵌套类(nested class)是指被定义在另一个类的内部的类。
嵌套类存在的目的应该只是为它的外围类(enclosing class)提供服务。
嵌套类有四种:静态成员类(static member class)、非静态成员类(nonstatic member class)、匿名类(annoymous class)和局部类(local class)。
除了第一种之外,其他三种都被称为内部类(inner class)。
静态成员类是最简单的一种嵌套类。可以看做普通的类,它可以访问外围类的所有成员,包括那些声明为私有的成员。
public class StaticMemberClass {
private String str;
private class StaticClassTest {
public void test(){
str="aaaa";
}
}
private StaticClassTest sct=new StaticClassTest();
public void method(){
sct.test();
}
}
静态成员类的一种常见用法是作为公有的辅助类,仅当与他的外部类一起使用时才有意义。
从语法上讲,静态成员类和非静态成员类之间唯一的区别是,静态成员类的声明中包含修饰符static。
尽管它们的语法非常相似,但是这两种嵌套类有很大的不同。非静态成员类的每个实例都隐含着与外围类的一个外围实例(enclosing instance)相关联。