`
jiq408694711
  • 浏览: 36618 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

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开发技术大全(500个源代码).

    示例描述:本章学习对象和类。 accessMember.java 访问成员变量示例 constructNoPara.java 无参数的构造方法 constructWithPara.java 带参数的构造方法 declareDefault.java 缺省访问权限的使用 declarePrivate...

    java 面试150道

    Java面试中的问题涵盖了广泛的知识点,包括但不限于类的作用域、匿名内部类、静态嵌套类、位运算符与逻辑运算符的区别、集合框架、断言、字符串对象的创建以及数学函数的应用。以下是对这些知识点的详细解释: 1. *...

    2017计算机二级测试Java部分.docx

    - **解释**:Java支持多线程、跨平台和动态性等特点,但不支持多继承(类级别的多继承)。 #### 24. 数据库设计 - **知识点**:数据库模式类型。 - **解释**:外模式(也称作子模式或用户模式)是用户视图的描述...

    Java求职宝典,经典Java面试题

    3. **静态嵌套类与内部类:**内部类(非静态)拥有对外部类的隐含引用,而静态嵌套类没有。静态嵌套类可以直接实例化,而内部类需要先有一个外部类的实例。 4. **位运算符与逻辑运算符:**`&`是位运算符,对两个...

    Java笔试题.doc

    静态嵌套类(Static Nested Class)与非静态内部类(Inner Class)的主要区别在于静态嵌套类不持有对外部类的引用,可以直接实例化,而内部类需要外部类的实例才能创建对象。静态内部类也不能直接访问外部类的非静态...

    java基础学习词汇

    Java支持嵌套类,包括静态嵌套类和非静态嵌套类。 #### Object (对象) 对象是Java中的基本单位,所有的类都是`Object`类的子类。对象具有状态(属性)和行为(方法)。 #### Overload (重载) 重载是指在一个类中...

    最新JAVA面试题150例经典题.doc

    1. **作用域**:在Java中,作用域决定了变量、类、接口等的可见性。`public`允许任何地方访问,`private`限制在当前类内,`protected`允许同一包内的类和子类访问,而没有指定修饰符的成员是`friendly`,也称为包级...

    应聘Java问题,超全面版本

    6. **断言(Assertion)**:在Java中,`assert`语句用于在开发和测试阶段检查代码的正确性,通常在生产环境中关闭。如果assert后的条件为假,则抛出AssertionError。 7. **String对象的创建**:`new String("xyz")`...

    java实现的数独游戏.zip

    10. **单元测试**:为了确保代码的正确性,开发者可能使用JUnit进行单元测试,测试各个类和方法的功能,确保它们按预期工作。 以上是“java实现的数独游戏”项目中可能涵盖的Java编程知识点,每个部分都体现了Java...

    JAVA问答题.doc

    3. **Static Nested Class 和 Inner Class**: 内部类(Inner Class)是嵌套在其他类中的类,它可以访问外部类的所有成员,包括私有的。静态内部类(Static Nested Class)与普通内部类的主要区别在于,静态内部类不...

    JAVA面试宝典

    从一个static方法内部发出对非static方法的调用是不合法的,因为在类加载阶段static方法就被初始化了,此时可能还没有创建对象,而非static方法需要依赖具体对象。 2. final、finally、finalize的区别:final是修饰...

    JAVA常用指令[参考].pdf

    31. **嵌套(nested)**:在Java中,可以有嵌套类(内部类),一个类可以定义在另一个类的内部。 32. **跳转(goto)**:Java中没有`goto`关键字,但可以通过标签和`break`、`continue`实现类似功能。 33. **耦合...

    java面试宝典

    3. **静态嵌套类(Static Nested Class)与非静态嵌套类(Inner Class)**:静态内部类不需要外部类的实例即可创建,而普通内部类需要。静态内部类不能直接访问外部类的非静态成员,但可以访问静态成员。 4. **位...

    Java终极面试题(2010整理版)

    Java是一种广泛使用的面向对象的编程语言,其设计目标包括简单性、面向对象、健壮性和安全性等特性。在Java的面试中,理解基础知识和高级概念是至关重要的。以下是一些基于给定标题和描述的Java知识点的详细解释: ...

    java编程常见面试题目.pdf

    ss (匿名内部类) 是否可以 extends(继承)其它类,是否可以 implements(实现)interface(接口)?匿名内部类可以直接继承一个类或者实现一个接口。它没有名称,通常用于需要一次性定制的类或接口实现,特别是在需要简洁...

    Java面试宝典。北大青鸟

    17. 访问修饰符`public`、`private`、`protected`和默认(包级私有)的区别在于可见性:`public`对所有类可见,`private`仅在当前类可见,`protected`在同一包及子类中可见,而默认仅在同一包内可见。 18. Overload...

    三角形问题白盒测试技术实验报告.docx

    白盒测试,也称为结构测试或逻辑驱动测试,是一种软件测试方法,它基于程序的内部逻辑结构和实现细节来设计测试用例。在白盒测试中,测试人员需要理解程序的源代码,关注点在于程序执行路径、控制流、数据流以及逻辑...

    Java常用英语汇总.doc

    37. **generic**:泛型是Java 5引入的特性,允许在类、接口和方法中使用类型参数,以增强类型安全性和代码复用。 38. **heap**:堆是Java内存模型的一部分,用于存储动态分配的对象。 39. **implements**:`...

    java_编程常用英语单词_解释

    例如,在Java中,可以通过访问修饰符(如 `public`, `private`, `protected` 和 `default`)来控制类、方法、字段等的可访问性。这些修饰符决定了哪些部分的代码可以访问特定的类成员。 #### Algorithm (算法) - **...

Global site tag (gtag.js) - Google Analytics