主类必须是public类吗(主类是什么)

2026-02-04 16:45:02 :0

主类必须是public类吗(主类是什么)

大家好,主类必须是public类吗相信很多的网友都不是很明白,包括主类是什么也是一样,不过没有关系,接下来就来为大家分享关于主类必须是public类吗和主类是什么的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

本文目录

主类是什么

类的名字和文件名一致,并且包含main函数的类,叫做主类。

以下是详细解释和案例:

先区分两个概念,

类的名字:在代码中定义类的时候,起的名字。比如:public class Demo{  },这里定义的Demo就是类的名字。

文件名:.java文件的名字。比如:Demo.java的前缀Demo就是文件名。 

一个文件至少包含一个类,则这个类的名字必须要和文件名一致。如果有多个类,则必须有一个类名和文件名一致。

楼上有人回答说,主类是带有main函数的类,是不对的。运行这段代码:

这个文件的名字是Demo.java,包含两个类:Demo 和 Demo2

class Demo{
public static void main(String args) {
System.out.println("123");
}
}
class Demo2{
public static void main(String args) {
System.out.println("abc");
}
}
//运行结果是:123

大家发现了,Demo和Demo2都有main方法,但是虚拟机Jvm执行Demo里的main函数,而不执行Demo2里的main函数,所以Demo是主类。

楼上还有人回答说“主类就是程序里面定义了一个public class,并且里面有main函数或者程序执行的入口。”也是不对的。比如上一段代码中,没有public修饰。主类不一定要被public修饰。

关于类的public修饰符,补充一下,供大家学习:

1.如果文件中只有一个类,文件名必须与类名一致,有没有public修饰都可以;

2.一个Java文件中最多只能有一个public类;

3.如果文件中不止一个类,而且有public类,文件名必须与public类名一致;

4.如果文件中不止一个类,而且没有public类,文件名可与任一类名一致。

JAVA 应用程序主类 必须用 public修饰吗

在java中,main()方法是java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void类型的,方法必须是接受一个字符串数组的参数等。\x0d\x0a因为main()方法是由Java虚拟机调用的,所以必须是public,虚拟机调用的main()方法的时候,不需要产生任何对象,所以main()方法声明为static,且不需要返回值,所以必须声明为void!\x0d\x0a\x0d\x0a类可以用public,abstract,final来定义,分别是:公共的,抽象的,最终的.\x0d\x0apublic:类只能被同一个源程序文件或同一个包中的其他类使用.\x0d\x0aabstract:定义的类代表了一个抽象的概念,就不能用它来实例化一个对象.\x0d\x0afinal:不可能有子类.也就是说它不能被继承.可以提高系统的安全性.

Java源文件中必须要有public类吗

不是必须的,可以没有public类。
但是一个Java源文件中最多只能有一个public类,当有一个public类时,源文件名必
须与之一致,否则无法编译,如果源文件中没有一个public类,则文件名与类中没有一致性要求。

程序中的主类如果不用public修饰,编译能通过吗

可以的。有关类的public修饰,有一个规定,就是一个.java文件里面,最多只能有一个public类(当然可以少于一个,就是0个了),否则编译不通过。
另外一个约定是,运行入口的main方法必须放到与文件名同名的类里面,比如T.java,里面main方法只能放到class T里面,否则不会被执行,但这只是约定,不会影响编译,也就是说你放到别的类,比如class T2里面也可以,但是不会通过java T命令来执行。

public类 主类是一个意思吗含main方法的类叫什么一个java文件只能有一个主类

主类是同一个意思,含main方法的类叫A类,一个Java源文件中可以有多个主类,但是只能有一个公共类或者没有公共类,所谓主类就是函数运行的一个入口,public static void main。源文件必须命名为E.java 因为E是公共类。有两个主类E和A,程序可以执行主类E和主类A。

语言特点

1.简单性

Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。例如,Java不支持go to语句,代之以提供break和continue语句以及异常处理。

Java还剔除了C++的操作符过载(overload)和多继承特征,并且不使用主文件,免去了预处理程序。因为Java没有结构,数组和串都是对象,所以不需要指针。

Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集,使用户不必为存储管理问题烦恼,能更多的时间和精力花在研发上。

2.面向对象

Java是一个面向对象的语言。对程序员来说,这意味着要注意应中的数据和操纵数据的方法(method),而不是严格地用过程来思考。在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。数据和方法一起描述对象(object)的状态和行为。

每一对象是其状态和行为的封装。类是按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。Java程序是用类来组织的。

Java还包括一个类的扩展集合,分别组成各种程序包(Package),用户可以在自己的程序中使用。

例如,Java提供产生图形用户接口部件的类(java.awt包),这里awt是抽象窗口工具集(abstract windowing toolkit)的缩写,处理输入输出的类(java.io包)和支持网络功能的类(java.net包)。

以上内容参考:百度百科-Java

java语言里必须要public吗

不是必须的,但是如果需要被其他的包访问,那么就需要定义成public的类
例如,如下程序是可以运行的
class test
{
public static void main(String args)
{
System.out.println("test");
}
}

一个java源文件中必须有public类吗

是的,且只能有一个,解释如下:
每个编译单元(文件)只能有一个public类。这么做的意思是,每个编
译单元只能有一个公开的接口,而这个接口就由其public类来表示。
我想这或是从软件架构设计和安全性设计上得出的结论。或者说是java的设计者们从这方面的考虑。或许这真的是一个规范,但我没有找到相关资料
不晓得到底有没有这一说话。如果有请知道的同行给出资料来源?
实验如下:
Test3.java源文件:
class Test1
{
int i = 1;
}
class Test2
{
int i = 2;
public static void main(String args)
{
System.out.println("main method");
}
}
C:/javatest》javac Test3.java
C:/javatest》Java Test2
main method
注:编译不会出错,注意是运行的Test2 因为没有Test3.class文件生成。如果运行Test3则报错
找不到该类
C:/javatest》java Test3
Exception in thread "main" java.lang.NoClassDefFoundError: Test3
Caused by: java.lang.ClassNotFoundException: Test3
at java.NET.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.Net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: Test3. Program will exit.
这个错误原因很简单:JVM中的类加载器找不到Test3.class
同时这里也说明了包含main()的类如果想运行则不一定要是public的。
《深入jvm第二版》中有这样一句话:
java虚拟机实例通过调用某个类的main()来运行一个Java程序,而这个main()必须是public
static void 并接收一个字符串数组作为参数,任何拥有这样一个main()的类都可以作为java程
序的起点。
并没有说拥有main()方法的类一定要是public类。
Test7.java源文件:
class Test5
{
int i = 1;
}
public class Test6
{
int i = 2;
public static void main(String args)
{
System.out.println("main method");
}
}
如果运行Test7.java 报错:
C:/javatest》javac Test7.java
Test7.java:8: 类 Test6 是公共的,应在名为 Test6.java 的文件中声明
public class Test6
^1 错误
这里说明了文件名必须与public类的类名一致,(如果文件中有public类)
这里可以看出如果有多个public类,那么文件名应该是哪个public类的呢?显然一个java源文件
只能有一个public类。
所以总结如下:一个Java源文件中最多只能有一个public类,当有一个public类时,源文件名必
须与之一致,否则无法编译,如果源文件中没有一个public类,则文件名与类中没有一致性要求。
至于main()不是必须要放在public类中才能运行程序。
以上是通过实验得出的结论,个人认为到这里已经可以了,如果一定要追问到底,可能要问问java
平台的设计者了。或许,人家会说:这是java的设计和jvm的内部体系结构设计造成,这是一个规
范,没有为什么。

以上就是我们为大家找到的有关“主类必须是public类吗(主类是什么)”的所有内容了,希望可以帮助到你。如果对我们网站的其他内容感兴趣请持续关注本站。

主类必须是public类吗(主类是什么)

本文编辑:admin

更多文章:


dialogue英文意思(dialogue是什么意思)

dialogue英文意思(dialogue是什么意思)

大家好,dialogue英文意思相信很多的网友都不是很明白,包括dialogue是什么意思也是一样,不过没有关系,接下来就来为大家分享关于dialogue英文意思和dialogue是什么意思的一些知识点,大家可以关注收藏,免得下次来找不到哦

2025年10月23日 14:30

misunderstand用法(understand的反义词)

misunderstand用法(understand的反义词)

“misunderstand用法”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看misunderstand用法(understand的反义词)!本文目录understand的反义词misunderstanding后跟什么介词

2025年12月9日 00:45

mutual proofreading(mutual造句)

mutual proofreading(mutual造句)

本篇文章给大家谈谈mutual proofreading,以及mutual造句对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录mutual造句mutual affinity是什么意思mutual造句mutual造句如下:1、F

2026年3月16日 16:00

excel中四舍五入取整数(如何在excel表格中进行四舍五入取整呢)

excel中四舍五入取整数(如何在excel表格中进行四舍五入取整呢)

各位老铁们好,相信很多人对excel中四舍五入取整数都不是特别的了解,因此呢,今天就来为大家分享下关于excel中四舍五入取整数以及如何在excel表格中进行四舍五入取整呢的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年2月7日 19:00

earliest(earliest怎么读)

earliest(earliest怎么读)

大家好,关于earliest很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于earliest怎么读的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文目录ear

2026年3月10日 21:45

ueditor表格默认属性修改(百度编辑器 Ueditor 初始内容默认 怎么做)

ueditor表格默认属性修改(百度编辑器 Ueditor 初始内容默认 怎么做)

本篇文章给大家谈谈ueditor表格默认属性修改,以及百度编辑器 Ueditor 初始内容默认 怎么做对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录百度编辑器 Ueditor 初始内容默认 怎么做ueditor怎么设置表格边

2026年8月21日 04:00

tomcat运行不了(为什么tomcat不能运行)

tomcat运行不了(为什么tomcat不能运行)

大家好,今天小编来为大家解答以下的问题,关于tomcat运行不了,为什么tomcat不能运行这个很多人还不知道,现在让我们一起来看看吧!本文目录为什么tomcat不能运行tomcat安装后运行不了windowtomcatshundown后启

2026年5月29日 17:00

grouplayout布局详解(在java中GroupLayout这个布局管理器的中文名叫什么绝对布局又应该怎么设置)

grouplayout布局详解(在java中GroupLayout这个布局管理器的中文名叫什么绝对布局又应该怎么设置)

各位老铁们,大家好,今天由我来为大家分享grouplayout布局详解,以及在java中GroupLayout这个布局管理器的中文名叫什么绝对布局又应该怎么设置的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的

2026年7月29日 22:30

linux图形化分区工具(请教Linux下图形化管理磁盘工具)

linux图形化分区工具(请教Linux下图形化管理磁盘工具)

本篇文章给大家谈谈linux图形化分区工具,以及请教Linux下图形化管理磁盘工具对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录请教Linux下图形化管理磁盘工具在操作系统中如何分区Linux下的分区工具和Fdisk使用方法

2025年12月2日 19:15

易语言写辅助容易被检测(易语言开发的软件都会被360提示为木马吗你怎么看)

易语言写辅助容易被检测(易语言开发的软件都会被360提示为木马吗你怎么看)

大家好,关于易语言写辅助容易被检测很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于易语言开发的软件都会被360提示为木马吗你怎么看的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希

2026年4月28日 12:30

免费java编辑器(Java开发工具哪个好)

免费java编辑器(Java开发工具哪个好)

这篇文章给大家聊聊关于免费java编辑器,以及Java开发工具哪个好对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录Java开发工具哪个好java代码的编辑软件(包括IDE)有哪些你认为哪个比较好用求好用的java开发工具现在

2025年9月4日 21:45

夏洛特与兔子漫画(夏洛特·E·叶格的动漫人物)

夏洛特与兔子漫画(夏洛特·E·叶格的动漫人物)

本篇文章给大家谈谈夏洛特与兔子漫画,以及夏洛特·E·叶格的动漫人物对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录夏洛特·E·叶格的动漫人物汇总动漫《海贼王》中,实力强大的七个女将,你知道是哪七个人吗有什么兽人类的漫画推荐吗动

2025年8月24日 20:00

oracle是什么意思翻译(oracle代表什么含义)

oracle是什么意思翻译(oracle代表什么含义)

本篇文章给大家谈谈oracle是什么意思翻译,以及oracle代表什么含义对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录oracle代表什

2026年5月21日 04:45

社交英语communicate(communicate 这个英语怎么读)

社交英语communicate(communicate 这个英语怎么读)

各位老铁们好,相信很多人对社交英语communicate都不是特别的了解,因此呢,今天就来为大家分享下关于社交英语communicate以及communicate 这个英语怎么读的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看

2026年1月31日 10:30

递归函数返回值(递归函数返回值问题)

递归函数返回值(递归函数返回值问题)

大家好,递归函数返回值相信很多的网友都不是很明白,包括递归函数返回值问题也是一样,不过没有关系,接下来就来为大家分享关于递归函数返回值和递归函数返回值问题的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!本文目录递归函数返

2025年6月18日 09:00

dockerattach卡住(docker exec 和 docker attach的区别)

dockerattach卡住(docker exec 和 docker attach的区别)

大家好,关于dockerattach卡住很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于docker exec 和 docker attach的区别的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还

2026年2月15日 03:30

borderradius是什么标签(border-radius是css3新增属性吗)

borderradius是什么标签(border-radius是css3新增属性吗)

大家好,关于borderradius是什么标签很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于border-radius是css3新增属性吗的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下

2025年12月16日 23:15

汇编语言论坛(如何学好汇编语言)

汇编语言论坛(如何学好汇编语言)

今天给各位分享如何学好汇编语言的知识,其中也会对如何学好汇编语言进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录如何学好汇编语言不会别的语言,可能直接学汇编语言么急 汇编语言fild dword ptr什么意思

2025年11月24日 07:15

charge词性转换(初三英语选择与词性转换)

charge词性转换(初三英语选择与词性转换)

其实charge词性转换的问题并不复杂,但是又很多的朋友都不太了解初三英语选择与词性转换,因此呢,今天小编就来为大家分享charge词性转换的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录初三英语选择与词性转换e

2026年4月8日 00:45

android车载app开发(Android车载应用开发与分析(2) - 集成第三方APK)

android车载app开发(Android车载应用开发与分析(2) - 集成第三方APK)

“android车载app开发”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看android车载app开发(Android车载应用开发与分析(2) - 集成第三方APK)!本文目录Android车载应用开发与分析(2) -

2025年12月17日 22:00

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索