main()方法的疑问?

yuercf 2001-12-12 10:35:46
public class test extends Frame
{
public static void main(String args[])
{
test d = new test()
d.setSize (400,400);
d.setVisible (true);
d.addWindowListener(new WinListen(this));
}
}

class WinListen implements WindowListener
{
//以下代码省略
}

编译时,系统提示"在静态上下文中,不能引用非静态变量this"是什么原因?
还有,就是在main方法中,能否引用类中的全局变量?main()方法里面的代码除了接收参数外,主要还初始化一些什么对象?
...全文
154 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
hahaha88 2001-12-14
  • 打赏
  • 举报
回复
main(...)只是一个入口,一个Java Application是从main开始的

main中不能用this是因为main是一个静态方法,在main中没有this
alou 2001-12-13
  • 打赏
  • 举报
回复
当然不是所有的类都在main()方法里面建造。
main()方法本身和对象的定义没有任何关系,它只是一个入口,就是地上白茫茫一片的时候的上帝。上帝只是创造了亚当和夏娃,现在那么多人,都不是上帝亲手创造的,而是亚当和夏娃生的。

程序如文章,如生活,不要用神秘的眼光去看程序,否则你将迷惑于那些古怪的符号组合,解脱出来,去享受程序里面的思想,正如周大圣所说,我现在用心眼去看世界。
yuercf 2001-12-12
  • 打赏
  • 举报
回复
是不是吃饭去了,也没有回答问题!!!!!
yuercf 2001-12-12
  • 打赏
  • 举报
回复
大哥,我就是因为有些地方看不懂才上论坛请教的呀,请这位大哥,能否指点一二?
Patrick_DK 2001-12-12
  • 打赏
  • 举报
回复
你要找本书好好看看基础方面的东东
yuercf 2001-12-12
  • 打赏
  • 举报
回复
上面的问题还没有人回答,小弟再想提个问题,就是在frame中增加一个组件,如按钮、选择按钮等,可以在main()方法中,执行如下:
d.add(各种控件);
但是我看有些例子,不在main()方法中初始fram增加控件,而是构造函数中使用如下的方法增加:add(各种控件),为什么add()方法前可以省略引用的对象,省略是不是默认当前frame?不省略,在构造函数中使用:d.add(各各控件),编译时,系统提示"不能解析变量d",是什么原因?
yuercf 2001-12-12
  • 打赏
  • 举报
回复
这样说来,我在main()方法中的对象d,也不能用其他的method中了,比如上面的代码中,我做如下的修改:
public class test extends Frame
{
public static void main(String args[])
{
test d = new test()
d.setSize (400,400);
d.setVisible (true);
}
public test()
{
d.addWindowListener(new WinListen(this));
}
}
在构造函数中,引用main()中定义的对象d,可不可以,也是同样的原因?
Patrick_DK 2001-12-12
  • 打赏
  • 举报
回复
好像没见过你这么写的
应该这么写吧
public class test extends Frame implement WindowListener
{
public static void main(String args[])
{
....
t.addWindowListener(this);
}
//定义详细的要操作的方法的方法体
//这里还要写出其他所有没有用到的WindowListener接口的方法的方法体
}
要么就是用Adapter来
public class test extends Frame
{
public static void main(String args[])
{
.....
WA wa=new WA();
t.addWindowListener(wa);
}
}
class WA extends WindowAdapter
{
//定义详细的要操作的方法的方法体
//不用写出其他方法的方法体了
}
javanew 2001-12-12
  • 打赏
  • 举报
回复
就是main是静态方法,对象还没创建时(也就是this=NULL)时,main就存在了,此时的this没有意义
yuercf 2001-12-12
  • 打赏
  • 举报
回复
拜托各位老大,能不能帮一个忙呀?
xiaoqianfu 2001-12-12
  • 打赏
  • 举报
回复
佩服、佩服!!alou()不愧为生活中的JAVA高手啊!
yuercf 2001-12-12
  • 打赏
  • 举报
回复
谢谢这位侠士,小弟犹如堕入云雾,能否通俗,简单点?
是不是说:所有的类是通过main()方法建造,所以test d =new test()这句必须放在main()方法中?
alou 2001-12-12
  • 打赏
  • 举报
回复
我把程序所说的用中文表达一次(一些无关紧要的东西就省去了):
这篇纪实文学名字叫“侠士”,首先我们介绍一下人物,就是“侠士”。
侠士是一类非常特别的人。为什么这么说呢?因为每一个侠士刚生出来的时候,他便去找一个名字叫做杨过的侠士,让杨过跟一个不知名的女孩恋爱。

故事就是这么开始的,当天地初开,地上白茫茫的一片,没有任何声明,上帝创造了一个侠士杨过,告诉他,你身长八尺,风流倜傥。.....

下面呢?没有了。什么没有了?下面没有了。

下面没有了,里面还有呢!
话说上帝创造杨过,杨过刚生出来的时候,便去找一个名字叫做杨过的侠士,让杨过跟小龙女恋爱......

main是创造杨过的上帝,杨过生出来的时候还没有名字,因为上帝当时还没有想好他叫杨过还是杨康,所以这时候那个小孩根本不知道怎么找到杨过。

看起来你的基础确实比较差,不要急躁,编程之道就在生活中。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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