是不是main方法放在哪个类里,这个类就是主类?

SilentHunter460 2020-06-15 04:15:37
一直有点怪怪的感觉,java每个类是不是平等的?
但是main方法是程序启动的位置,那么main所在的类就应该算主类了吧?
既然它是一个主类,其它类却又可以在自己的类里new一个主类对象,有点乱伦的感觉。
换个方式比喻,虽然高铁每节车箱都有动力,但车头还是得有车头的样子,比如车头做成子弹的样子。
...全文
1403 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
SilentHunter460 2020-06-16
  • 打赏
  • 举报
回复
引用 2 楼 战老师课堂 的回复:
首先对于Java语言而言,一个普通的应用程序没有特殊情况JVM总是从main方法开始 启动并执行程序逻辑。通常也把包含main方法的类称作主类,常规性一个普通Java应用 程序只有一个类包含main方法就可以了,但是这并不说明其他类中有main方法就一定不可以, 当然如果有多个main方法结构都和标准的main方法一样,那就需要在发布应用时指定哪个类 才是主类从而让JVM能够找到这个类及其中的main方法执行调用从而运行此应用程序。 对于Java中所有类是不是平等的任何官方和权威文档中没有给出定义,但是从Java面向对象 的设计概念而言,任何类都可以根据实际情况决定是否设置与其他类进行关联,从而使用 目标类的功能,因此某些程序为了达到某个目的,一个类中包含主类的对象引用是很正常的, 其一目的可能就是为了调用主类中的其他方法,当然main方法可以直接通过主类名称调用,因 为它是静态的。 至于你将生活中的火车头是动力而其他列车箱是附属于车头的这个现象来与你描述的其他类中 包含主类进行相比当然是不合适。也可以这样说,Java应用中主类中main方法是起点,但是并不 说明其他类就附属于这个主类,很明显你对Java面向对象的概念还是理解的不够彻底。
你好,谢谢回复。 我明白,只要愿意,可以在任意类中加入main方法,从任何一个main方法启动程序。但是这么做的目的是什么?何不用火车头带车箱的思路,只给火车头加main方法。
SilentHunter460 2020-06-16
  • 打赏
  • 举报
回复
引用 3 楼 qybao 的回复:
不是 很多java文件为了方便单独测试和功能演示,都提供main来直接运行,让用户直接看效果。
但最终还是要有一个主类,从这个主类的main进入,来启动完整的软件,对吧? 其它附属的类,它们自己的main,只是管住本类自己的东西,对吧?
qq_39936465 2020-06-16
  • 打赏
  • 举报
回复
引用 5 楼 qq_16774199 的回复:
你好,谢谢回复。 我明白,只要愿意,可以在任意类中加入main方法,从任何一个main方法启动程序。但是这么做的目的是什么?何不用火车头带车箱的思路,只给火车头加main方法。
因为main只是为了单独启动自己,如果其他类来调用的话,不需要main方法也可以调用,所以如果全写了main方法一是感觉多余,二是让别人阅读程序会混乱无法找到真正的主程序。 项目只能从主程序才能正确启动程序,程序是有逻辑的,不是哪里启动都可以的。
drowadrowa 2020-06-16
  • 打赏
  • 举报
回复
注解一个@Test测试,相当于main方法了
qybao 2020-06-16
  • 打赏
  • 举报
回复
引用 4 楼 qq_16774199 的回复:
但最终还是要有一个主类,从这个主类的main进入,来启动完整的软件,对吧?
其它附属的类,它们自己的main,只是管住本类自己的东西,对吧?


不是所有的程序都需要从main来启动的,比如web程序就是个例子,它只需要运行在web容器,没有main方法照样能被运行。说明main方法只是提供了程序入口的一种方式。就好比有些主类就是没有main方法,main方法交给一个叫启动类(Starter)的来托管,你觉得这个启动类算不算主类(它没有什么业务逻辑,就是单纯的有个main方法用来启动主类)?所以我觉得你要先弄清楚这个主类的定义,我个人觉得不是用有没有main方法来区分是不是主类的。
qybao 2020-06-15
  • 打赏
  • 举报
回复
不是 很多java文件为了方便单独测试和功能演示,都提供main来直接运行,让用户直接看效果。
正等正觉* 2020-06-15
  • 打赏
  • 举报
回复
首先对于Java语言而言,一个普通的应用程序没有特殊情况JVM总是从main方法开始
启动并执行程序逻辑。通常也把包含main方法的类称作主类,常规性一个普通Java应用
程序只有一个类包含main方法就可以了,但是这并不说明其他类中有main方法就一定不可以,
当然如果有多个main方法结构都和标准的main方法一样,那就需要在发布应用时指定哪个类
才是主类从而让JVM能够找到这个类及其中的main方法执行调用从而运行此应用程序。
对于Java中所有类是不是平等的任何官方和权威文档中没有给出定义,但是从Java面向对象
的设计概念而言,任何类都可以根据实际情况决定是否设置与其他类进行关联,从而使用
目标类的功能,因此某些程序为了达到某个目的,一个类中包含主类的对象引用是很正常的,
其一目的可能就是为了调用主类中的其他方法,当然main方法可以直接通过主类名称调用,因
为它是静态的。
至于你将生活中的火车头是动力而其他列车箱是附属于车头的这个现象来与你描述的其他类中
包含主类进行相比当然是不合适。也可以这样说,Java应用中主类中main方法是起点,但是并不
说明其他类就附属于这个主类,很明显你对Java面向对象的概念还是理解的不够彻底。
  • 打赏
  • 举报
回复
对于一个项目来说,比如springboot项目,启动类即 主类 ,它的意义是带动起整个项目,在其他地方可以去调用主类,但是这么做没有意义 就像你说的,可以用车头调动整个高铁,干嘛要用中间的车去推动整个高铁呢

62,628

社区成员

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

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