/** * */ package innerClass; /** * 结论: * 静态环境中不能引用非静态域。 * 静态方法/嵌套类只能声明在静态的或者顶层结构中 * 非静态方法/内部类可以放置在任何位置,任何一层 * */ public class InnerClassAccess { private float f = 1.0f; //非静态字段 class InnerClassA{ //static void method(){}//静态方法只能声明在静态的或者顶层的结构里面 //static class TestA{} //嵌套类只能声明在静态的或者顶层的结构里面 class Test{ //内部类可以嵌套放在任意一层 class TestB{ class TestC{} } } } void function2(){ //内部类可以放置在非静态方法中 class TestF{}; new TestF(); } static void function(){ //内部类也可以放置在静态方法中 class TestD{} new TestD(); } static class InnerClassB{ public void method(){ //f = 20; //在嵌套类中不能引用非静态域 } static void f(){ //在静态方法中不能引用非静态域 //f = 20; } class TestE{} //内部类可以放置在嵌套类中 } //内部类可以是抽象类 abstract class InnerClassC{ public abstract void method(); abstract class InnerClassT{} //内部抽象类也可以嵌套 } //内部类可以是接口 interface InnerClassD{ public void method(); interface InnerClassI{} //内部接口也可以嵌套 } //私有内部类中可以放置public方法 private class InnerClassX{ public void g(){} } public static void main(String[] args) { new InnerClassAccess(); } }