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

本文详细介绍了Java中内部类的使用规则,包括它们在静态与非静态环境中的引用特性,以及如何在不同层级嵌套内部类、接口和抽象类。通过具体示例说明了内部类的灵活性及其限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
 * 
 */
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();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值