【新手求助】求助,关于NEW时错误:没有任何类型的外层实例可访问
例如 ATypeName a=new ATypeName();
正确情形:
源代码:
public class ATNTest {
public static void main(String[] args) {
class ATypeName {
int i;
double d;
boolean b;
void show() {
System.out.println(i);
System.out.println(d);
System.out.println(b);
}
}
ATypeName a = new ATypeName();
a.i = 3;
a.d = 2.71828;
a.b = false;
a.show();
}
}
此时没有问题,将ATypeName类放在ATNTest类外也没有问题,如:
public class ATNTest {
public static void main(String[] args)
{
ATypeName a=new ATypeName();
a.i=3;
a.d=2.71828;
a.b=false;
a.show();
}
}
class ATypeName
{
int i;
double d;
boolean b;
void show()
{
System.out.println(i);
System.out.println(d);
System.out.println(b);
}
}
错误情形:
可是,当ATypeName类在main函数外是,会出现如下错误:
没有任何类型 ATNTest 的外层实例可访问。必须用类型 ATNTest 的外层实例(例如,x.new A(),其中 x 是 ATNTest 的实例)来限定分配。
出错代码:
public class ATNTest {
public static void main(String[] args)
{
ATypeName a=new ATypeName(); //出错代码
a.i=3;
a.d=2.71828;
a.b=false;
a.show();
}
class ATypeName
{
int i;
double d;
boolean b;
void show()
{
System.out.println(i);
System.out.println(d);
System.out.println(b);
}
}
}
求高手解释下此时::::外层是指谁的外层?外层实例是指什么?外层实例是指对象的实例么?错误代码为什么错了,new 后面跟的是什么,是初始化对象的方法么?