编译器报错:无法从静态上下问中引用非静态变量。
但是为什么主函数NEW1个外部类对象可以成立呢?
class Inner1
{
}
class InnerClassDemo3
{
class Inner2
{
}
public static void main(String[] args)
{
//System.out.println("Hello World!");
new Inner1();
new Inner2();
}
}
因为Inner2是类InnerClassDemo3 的一个成员变量,静态函数只能访问静态变量,要想访问Inner2有两种方法:
方法一:
static class Inner2 {
}
将变量声明为静态的
方法二:
class Inner2 {
String a = "hello";
}
public static void main(String[] args) {
Inner2 inner = new MyTest().new Inner2();
System.out.println(inner.a);
}
1.内部类中有静态方法内部类必须为静态
2.静态方法只能访问静态变量和静态方法
3.静态方法中不能有this.super
4.main()方法是一个典型的静态方法,它同样遵循一般静态方法的规则
基于第1条,因为类InnerClassDemo3有static方法main所以 InnerClassDemo3 需要加static关键字
基于第2条,因为static方法main调用类变量Inner2,所以Inner2加static关键字
肯定的啊,inner2是内部类,你直接调用它是看不见的,只能用外部类.内部类!内部类相当于是内部成员!
编译器将其翻译后内部类虽然自成一个类,但是此时类的名字不是inner2了!