Because: Java는 해석되고 실행됩니다. 런타임 중에 모든 클래스 파일을 메모리에 저장하지 않습니다. 대신, 가져오기가 발생하면 해당 클래스 파일을 찾기 위해 해당 파일 디렉터리로 이동합니다.
공개 클래스의 경우 프로젝트의 모든 클래스에서 참조할 수 있습니다. 사용하기 전에 해당 클래스 파일을 가져오기만 하면 됩니다. 클래스 이름과 파일 이름의 일대일 대응은 가상 머신이 해당 경로(패키지 이름)에서 해당 클래스 정보를 찾는 데 도움이 됩니다. 그렇지 않으면 찾기가 어렵고 비용이 많이 듭니다.
요약:
소스 파일(.java)에서 public으로 수정되지 않은 클래스도 동일한 파일 이름을 가질 수 있습니다.
소스 파일의 클래스 이름과 파일 이름이 일치하지 않을 수 있지만 공개로 수정할 수는 없습니다.
패키지에 공개 수정 클래스가 없으면 이 패키지는 의미가 없다고 생각합니다. "클라이언트 프로그래머"는 인터페이스를 제공하는 데 사용할 수 없습니다. public으로 수정되지 않은 클래스에 공용으로 수정된 정적 메서드가 포함되어 있어도 "클라이언트 프로그래머"는 이에 액세스할 수 있는 권한이 없습니다.
소스 파일에서 public으로 수정되지 않은 클래스는 주로 public으로 수정된 클래스를 "지원"합니다.
하나의 .java 소스 파일에 많은 클래스를 작성하지 않는 것이 가장 좋습니다.
메인 메소드는 반드시 공개 수정 클래스에서 실행될 필요는 없습니다. 하지만 주요 메소드는 공개 수정되어야 합니다
"Java로 생각하기" 설명:
为Java创建一个源码文件的时候,它通常叫作一个“编辑单元”(有时也叫作“翻译单元”)。每个编译单元都必须有一个以.java结尾 的名字。而且在编译单元的内部,可以有一个公共(public)类,它必须拥有与文件相同的名字(包括大小写形式,但排除.java文件扩 展名)。如果不这样做,编译器就会报告出错。每个编译单元内都只能有一个 public类(同样地,否则编译器会报告出错)。那个编译 单元剩下的类(如果有的话)可在那个包外面的世界面前隐藏起来,因为它们并非“公共”的(非public),而且它们由用于主public 类的“支撑”类组成。编译一个.java文件时,我们会获得一个名字完全相同的输出文件;但对于.java文件中的每个类,它们都有一个. class扩展名。因此,我们最终从少量的.java文件里有可能获得数量众多的.class文件。如以前用一种汇编语言写过程序,那么可能已 习惯编译器先分割出一种过渡形式(通常是一个.obj文件),再用一个链接器将其与其他东西封装到一起(生成一个可执行文件),或 者与一个库封装到一起(生成一个库)。但那并不是Java的工作方式。一个有效的程序就是一系列.class文件,它们可以封装和压缩到 一个JAR文件里(使用Java1.1提供的jar工具)。Java解释器负责对这些文件的寻找、装载和解释(注释①)。 ①:Java并没有强制一定要使用解释器。一些固有代码的Java编译器可生成单独的可执行文件。
위 내용은 Java 파일 이름이 클래스 이름과 동일해야 하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!