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