class outer
{
private int index=100;
class inner
{
private int index=50;
void print()
{
System.out.println(index);
System.out.println(this.index);
System.out.println(outer.this.index);
}
}
void print()
{
inner in=new inner();
in.print();
}
inner getinner()
{
return new inner();
}
}class testouter
{
public static void main(String[] arg)
{
outer out=new outer();
outer.inner in=outer.getinner();
}
}
为什么提示D:\java\outer.java:30: 无法从静态上下文中引用非静态 方法 getinner()
outer.inner in=outer.getinner();
^
{
private int index=100;
class inner
{
private int index=50;
void print()
{
System.out.println(index);
System.out.println(this.index);
System.out.println(outer.this.index);
}
}
void print()
{
inner in=new inner();
in.print();
}
inner getinner()
{
return new inner();
}
}class testouter
{
public static void main(String[] arg)
{
outer out=new outer();
outer.inner in=outer.getinner();
}
}
为什么提示D:\java\outer.java:30: 无法从静态上下文中引用非静态 方法 getinner()
outer.inner in=outer.getinner();
^
outer.inner in=outer.getinner();
你这样写, 是想这样调用吧
outer.inner in=out.getinner();
注意:
outer out
所以建议类名才用大写形式。修改成这样就可以了 class outer
{
private int index=100;
class inner
{
private int index=50;
void print()
{
System.out.println(index);
System.out.println(this.index);
System.out.println(outer.this.index);
}
}
void print()
{
inner in=new inner();
in.print();
}
inner getinner()
{
return new inner();
}
}class testouter
{
public static void main(String[] arg)
{
outer out=new outer();
outer.inner in=outer.getinner();
}
}
改成
outer.inner in=out.getinner();
郁闷了
{
private int index=100;
class inner
{
public int index=50; //这里把private改为public
void print()
{
System.out.println(index);
System.out.println(this.index);
System.out.println(outer.this.index);
}
}
void print()
{
inner in=new inner();
in.print();
}
inner getinner()
{
return new inner();
}
}public class testouter
{
public static void main(String[] arg)
{
outer out=new outer();
outer.inner in = out.getinner(); //调用成员方法要用类对象
System.out.println(in.index); //得到index的值
in.print(); //调用成员方法print()
}
}