为什么java里的main在类里啊?

gbz198831c 2008-02-02 06:31:35
是java就这么定义的吗这样理解?
...全文
522 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
nwsl 2008-02-04
  • 打赏
  • 举报
回复
main函数用来测试那个类写得对不对,所以写在里面比较方便,不然用来测试多少个类呀?
coolhty 2008-02-03
  • 打赏
  • 举报
回复
如果你可以修改JDK...让它不给你报个错,也行..写在外面就写在外面..
mu_yang 2008-02-03
  • 打赏
  • 举报
回复
理论上来说
main() 应该是超然于类的
但在现实中却必须寄"类"篱下
原因只有一个
java把一切都看成了对象
要求代码必须以类为基本单元

mu_yang 2008-02-03
  • 打赏
  • 举报
回复
"每个单独的类自己带一个main用来测试,不影响正常运行"
bloodrate 的这个观点我比较赞同
这似乎是能容忍将main()写在类内部的唯一的理由

为了表明彻底的OO
java把一切都看成了对象
但是
通常对象是由别的对象创造之后才能活动的
这样就产生了一个悖论
顶层的对象如何被创造并自举?
这是一个无解的哲学问题
很让人无奈
牛顿在这种情况下狡辩说
"上帝踢了它一脚"
James Gosling的办法是
蹩脚地容许给类添加上一个main()
main()是对象的"第一推动力"
或者是"第一推动力"的电源插座

ewinman 2008-02-03
  • 打赏
  • 举报
回复
MAIN一般是在做应用程序时的一个入口
如果没有MAIN
就等同于我们启动程序找不到链接
虽然程序是好的
但启动不了
但在JSEE中就可以不用它了
bloodrate 2008-02-03
  • 打赏
  • 举报
回复
我刚接触JAVA的时候也不能理解这个,但是因为JAVA里万物都是类,没有类以外的空间,所以想写main函数只能写在类里,我觉得一个更好的策略就是把main单做成一个类,然后通过一些通用方法运行程序,因为如果类多了,总觉得把main放在哪个类里都不合适,main和任何类都没有归属关系,所以设计的时候是不是可以考虑单做出一个执行类,只用里面的main函数调用外面所有类?

话说回来,main函数在类里又有其他的好处:方便测试,通常写完一个类就要测试一下好不好用,再写下一个,这个类可能不能单独运行,需要别人调用运行,如果main在一个统一的得地方的话,只能在那个地方测试这个类,然后正式运行的时候注释掉,这样看起来非常乱,每个单独的类自己带一个main用来测试,不影响正常运行,也不用注释任何代码,很方便的说。
mu_yang 2008-02-03
  • 打赏
  • 举报
回复
main() 不是 类 的手指
最多是手套
甚至可能连手套都算不上
CoderPlusPlus 2008-02-03
  • 打赏
  • 举报
回复
恩,每个类都可以有main方便单元测试
mu_yang 2008-02-03
  • 打赏
  • 举报
回复
把main函数定义成静态是因为它必须是全局的
本质上来说
main()既不属于类
也和类无关
ninesea 2008-02-03
  • 打赏
  • 举报
回复
说java里一切皆类 我不觉得
为什么要把main函数定义成静态的呢 说明类的还不够完全 完全可以有个main类 然后从main类里的第一个函数开始执行程序
mu_yang 2008-02-03
  • 打赏
  • 举报
回复
什么叫"深层次"啊?
ailiban123 2008-02-03
  • 打赏
  • 举报
回复
大家能不能在深层次介绍一下呀?
  • 打赏
  • 举报
回复
你说人一只手上为啥要有五只手指呢?
libodls 2008-02-03
  • 打赏
  • 举报
回复
本若理解:发明java的人完全可以把main设计为abc,并且写在类的外面。
但是之所以是现在的样子固然有它的好处,楼上的都说过了,呵呵。
边城狂人 2008-02-02
  • 打赏
  • 举报
回复
为什么main是在类里?因为Java的语法就是这么规定的。
Java语法规定任何一个方法都必须在类里,main也不例外。
Java同时还规定,用java ClassName来运行一个类中的main函数,而且这个main函数必须是被申明为
public static void main(String[])的,它可以是final的也可以不是,但必须是public,静态、返回void,且接收String数组参数的。

mu_yang 2008-02-02
  • 打赏
  • 举报
回复
因为Java强调万物都是神圣类
由于过于强调类的神圣性
但最后发现类还必须食用人间烟火
所以最后只能生硬地给类装上这么个不伦不类的人造入口
实际上main()和类基本没什么关系
hitzsf 2008-02-02
  • 打赏
  • 举报
回复
main是一个建筑的入口 呵呵
大门当然就属于一个建筑了
healer_kx 2008-02-02
  • 打赏
  • 举报
回复
C#的main也是在类内的,这些靠着OO走红的语言都是这个德行的。而实际上这个方法和这个类可能都没有关系。
牵强附会的最好诠释。
dave080 2008-02-02
  • 打赏
  • 举报
回复
2楼说的是!
桃子 2008-02-02
  • 打赏
  • 举报
回复
面向对象的思维,一切皆为类...所以一切都要放在类里面

C那个是半面向过程半面向对象的

我们老师曾开玩笑说
c++只有70%面向对象
java有90%
加载更多回复(2)

62,616

社区成员

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

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