求教 JAVA外部类 无法从静态上下文中引用非静态 方法

class Outer
{
static int x;
public static void main(String a[])
{
Outer outer=new Outer();
Inner inner=new Inner();
Outer.Inner test();
}
class Inner
{
void test();
{
System.out.println("x="+x);
}
}
}

死活就一句话“无法从静态上下文中引用非静态 方法”
不知道怎么搞了
告诉我这样为什么不行
谢谢
上面多打了句Outer.Inner test();
有这句就是 需要 “;”

class Outer
{
static int x;
public static void main(String a[])
{
Outer outer=new Outer();
Inner inner=outer.new Inner();//内部类的实例应该是:外部类实例名称+逗号+内部类实例;也可以用:Inner inner = new Outer().new Inner();
inner.test();//方法的调用是:类的实例名称+逗号+方法
}
class Inner
{
void test()//这里你多了个分号
{
System.out.println("x="+x);
}
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-02-02
class Outer
{
static int x;
public static void main(String a[])
{
Outer outer=new Outer();
Inner inner=new Inner();
inner.test(x);
}
}
class Inner
{
void test(int x)
{
System.out.println("x="+x);
}
}
用static方法不能调用类内的非static方法 和非静态数据成员
只能访问类内的非static方法 和非静态数据成员
函数入口也属于static方法
第2个回答  2011-02-02
因为静态的变量或方法在类被声明初始化时候,在堆空间已经分配好了。所有这个类的对象都操纵这一个值,而非静态变量是有一个对象就有一个对应的变量。如果静态变量能操纵非静态的变量会让jvm分配和使用发生混淆,sun公司当初为了避免这个情况,特意让静态只能引用静态的方法和变量,而非静态的可引用所有。
新年快乐。
相似回答