Java测试内部类和嵌套类位置的合法性

/**
 * 
 */
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();
	}
}

你可能感兴趣的:(java)