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

本文目录
- 主类是什么
- JAVA 应用程序主类 必须用 public修饰吗
- Java源文件中必须要有public类吗
- 程序中的主类如果不用public修饰,编译能通过吗
- public类 主类是一个意思吗含main方法的类叫什么一个java文件只能有一个主类
- java语言里必须要public吗
- 一个java源文件中必须有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的内部体系结构设计造成,这是一个规
范,没有为什么。

更多文章:
misunderstand用法(understand的反义词)
2025年12月9日 00:45
excel中四舍五入取整数(如何在excel表格中进行四舍五入取整呢)
2026年2月7日 19:00
ueditor表格默认属性修改(百度编辑器 Ueditor 初始内容默认 怎么做)
2026年8月21日 04:00
grouplayout布局详解(在java中GroupLayout这个布局管理器的中文名叫什么绝对布局又应该怎么设置)
2026年7月29日 22:30
linux图形化分区工具(请教Linux下图形化管理磁盘工具)
2025年12月2日 19:15
易语言写辅助容易被检测(易语言开发的软件都会被360提示为木马吗你怎么看)
2026年4月28日 12:30
社交英语communicate(communicate 这个英语怎么读)
2026年1月31日 10:30
dockerattach卡住(docker exec 和 docker attach的区别)
2026年2月15日 03:30
borderradius是什么标签(border-radius是css3新增属性吗)
2025年12月16日 23:15
android车载app开发(Android车载应用开发与分析(2) - 集成第三方APK)
2025年12月17日 22:00












