【新手求助】求助,关于NEW时错误:没有任何类型的外层实例可访问

长安小白的重新启程 2012-02-12 03:34:38
例如 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 后面跟的是什么,是初始化对象的方法么?
...全文
1421 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Do下去 2014-03-24
  • 打赏
  • 举报
回复
Thank you very much!
nmyangym 2012-12-29
  • 打赏
  • 举报
回复
1楼说的对。 要想生成内部类的对象,只能通过外部类的对象"new"出内部类的对象。

		//ATypeName a=new ATypeName();  //出错代码
		ATNTest atnt=new ATNTest();		//先生成外部类的对象。
		ATypeName a=atnt.new ATypeName();	//用外部类对象来生成("new"出)内部类对象。
qqqqkk 2012-12-29
  • 打赏
  • 举报
回复
ATypeName类要在 ATNTest类外面,你最好是看一下你的{}是不是弄错了
集思开发者 2012-10-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

外层就是ATNTest,外层实例就是ATNTest的实例,看一下内部类就会了。
[/Quote]
lll
Acesidonu 2012-02-12
  • 打赏
  • 举报
回复
外层就是ATNTest,外层实例就是ATNTest的实例,看一下内部类就会了。

51,408

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧