为什么Java文件名必须与公共类名相同?
问题是“我们可以为Java类名和Java文件名保留不同的名称吗?”
是的,当且仅当该类不是公共类时,才能为java文件名和Java类名保留不同的名称。
有两种情况,我们将在这里讨论...
情况1:如果类不是公开的,我们将使用其他名称
情况2:如果类是公开的,我们将使用其他名称
情况1:如果类不是公开的,我们将使用其他名称
借助示例,我们将看到如果该类不是公共类,会发生什么情况,在这种情况下,我们可以为java类和java文件取一个不同的名称,这意味着不必强制使用相同的名称。在这种情况下,java类名称和java文件名。
示例
class ClassIsNotPublic{ public static void main(String[] args){ String str1 = "This class is not public so we can take different name for the java filename and java classname"; String str2 = "This class is not prefixed with public keyword that's why it is not public"; System.out.println("What will happen if we take non public class " +str1); System.out.println("Why it is not public class "+ str2); } }
输出结果
E:\Programs>javac abc.java [abc is java filename] E:\Programs>java ClassIsNotPublic [ClassIsNotPublic is java classname] What will happen if we take non public class This class is not public so we can take different name for the java filename and java classname Why it is not public class This class is not prefixed with public keyword that's why it is not public
情况2:如果该类是公开的,我们将使用其他名称
如果我们将某个类声明为“public”,则在这种情况下,java文件名和Java类名必须相同或换句话说,对于Java类名和java文件名,我们不能使用任何其他名称。公共类。
示例
public class ClassIsPublic{ public static void main(String[] args){ String str1 = "This class is public so we can't take different name for the java filename and java classname"; String str2 = "This class is prefixed with public keyword that's why it is public class"; System.out.println("What will happen if we take public class"+" " +str1); System.out.println("Why it is public class "+ str2); } }
输出结果
E:\Programs>javac xyz.java xyz.java:1: error: class IfClassIsPublic is public, should be declared in a file named IfClassIsPublic.java public class IfClassIsPublic{ ^ 1 error
现在,我们将看到在公共类的情况下,为什么要求Java文件名和Java类名使用相同的名称?
有几点要理解为什么需要使用相同的名称?
假设我们有一个名为“java1000”的java文件,该java文件中有1000个类,在这种情况下,如果我们想在1000个类中找到任何一个类,那么将很难找到它,并且会造成很多混乱。
在该java文件中,我们有1000个类,我们知道很难在1000个类中找到任何一个类,因此,在那种情况下,几乎一个类是公共类,而公共类将包含main()
方法,因此所有类对象都将从main()
方法中调用class(即publicclass),所以如果我们使用java文件名,并且publicclass名称将是相同的,那么将很容易在publicclass中找到任何类。
如果我们的java文件名和公共类名相同,那么通过使用java文件名,我们可以轻松地访问publicclass(main()方法类);如果我们访问public类,那么从该类中我们也可以访问任何其他类。1000个类,我们知道所有类对象都将从main()
方法类(即公共类)中调用。