类名和文件名必须一致吗?

如题所述

类的名字和文件名一致,并且包含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类,文件名可与任一类名一致。

温馨提示:内容为网友见解,仅供参考
无其他回答

类名和文件名必须一致吗?
一个文件至少包含一个类,则这个类的名字必须要和文件名一致。如果有多个类,则必须有一个类名和文件名一致。楼上有人回答说,主类是带有main函数的类,是不对的。运行这段代码:这个文件的名字是Demo.java,包含两个类:Demo 和 Demo2 class Demo{public static void main(String[] args) {Syste...

类名和文件名可以不一样么?
用public修饰的类名必须与文件名同名。比如 public class test{} 那么文件名必须为test.java

Java中类的命名规范?
2. Java文件的文件名要与程序中的public类名相同。3. Servlet文件要以Servlet作为结尾,如:AddCompanyServlet.java。三、类名:每个单词的首字母大写。同上。四、变量名。1. class变量的命名:变量的名字必须用一个小写字母开头,后面的单词用大写字母开头。2. static final变量的命名:static final变量...

Java中,类名与文件名需要相同吗?
如果一个编译单元(文件)中含有public的类,则文件名必须与类名一致,如果没有public类,则文件可以随意命名。一个文件中,public的类可以有零个或一个,非public的类可以有零个或多个。

为什么我把文件名和类名不一样就找不到main函数了
java是面向对象的程序语言,面向对象的一个主要思想就是类,而mian函数又要求包含在一个类中,这样java解释器解释运行程序的时候,运行的类名就是main函数所在的类名 ,所以呢,要求文件名和main函数所在的类名完全一样拉~~

在c++程序中,文件名和类名一定相同的吗?
没有强制要求,一般会相同,这样可以在物理结构上直接了解工程的逻辑

类名是什么意思?
在Java等面向对象的编程语言中,类名必须与文件名相同,且首字母必须大写。在面向对象编程中,定义了一个类之后,需要通过实例化来创建出具体的对象。这个过程也叫做类的实例化。实例化的目的是利用定义好的类构造出一个具有独立属性和行为的对象。在Java中,使用new关键字来实例化类,例如:Person p =...

Java 编程时对象名称不一致是什么原因?
在Java编程中,对象名称不一致的原因可能是因为类名和文件名不一致。当我们使用javac命令编译Java源文件时,编译器将会查找与公共类名相匹配的文件名,如果找不到,就会报错。要解决这个问题,我们需要确保文件名和类名一致,以便编译器能够正确地识别类定义 。

java的主类命名必须和什么一致
Java保存的文件名必须与类名一致。当编写一个Java源代码文件时,此文件通常被称为编译单元(有时也称为转译单元)。每个编译单元都必须要有一个后缀为.java,而在编译单元内测可以 有一个public类,该类的名称必须与文件名称相同(包括大小写,但不包括文件的后缀名.java)。每个编译单元只能有一个public...

为什么我用ecplise写Java,所有类名都必须和文件名一样?
不是的!那不叫文件名而是类名!那个名称和classic 后面这个一定要一样才可以的!不然就不行的!public class Text { public static void main(String args[]){ } }所以你一开始建的那个名称也得是Text

相似回答
大家正在搜