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