우리는 몇 가지 Java 프로그램을 작성했습니다. 이전의 모든 Java 프로그램은 Test.java와 같은 파일로 저장되었습니다. 그 후, 프로그램은 Test.class로 컴파일됩니다. 결국 $java Test를 사용하여 프로그램을 실행하게 됩니다.
그러나 일반적인 Java 프로젝트에서는 두 개 이상의 .java 프로그램을 작성해야 하는 경우가 많으며 최종 Java 제품에는 모든 Java 프로그램이 포함됩니다. 따라서 자바는 자바 프로그램을 구성하는 문제를 해결해야 합니다. 패키지의 목적은 Java 프로그램을 더 잘 구성하는 것입니다.
패키지 생성
패키지 생성은 매우 간단합니다. Java 프로그램 시작 부분에만 패키지를 추가하면 됩니다. Human 클래스를 예로 들어 패키지에 넣어보겠습니다.
다음과 같이 코드 코드를 복사합니다.
패키지 com.vamei.society;
공개 수업 휴먼
{
/**
* 생성자
*/
공개 인간(int h)
{
this.높이 = h;
System.out.println("나는 태어났어요");
}
/**
*접속자
*/
공개 int getHeight()
{
this.height를 반환합니다.
}
/**
* 돌연변이
*/
공공 무효 성장 높이(int h)
{
this.height = this.height + h;
}
개인 정수 높이;
}
위 문장의 첫 번째 줄을 복사하는 코드는 다음과 같습니다.
패키지 com.vamei.society;
프로그램이 com.vamei.society 패키지에 있음을 나타냅니다. com.vamei(vamei.com의 반대)는 패키지 작성자의 도메인 이름을 나타냅니다(안타깝게도 이 도메인 이름은 다른 사람이 등록한 것이므로 데모용으로만 사용됩니다). Java에서는 여러 작성자를 구별하기 위해 패키지에 도메인 이름 접두사가 있어야 합니다. Society는 추가 로컬 경로 이름입니다. com.vamei.society가 함께 패키지 이름을 구성합니다.
패키지는 Java 프로그램에 대한 이름 공간을 제공합니다. Java 클래스의 전체 경로는 com.vamei.society.Human과 같은 패키지 및 클래스 이름으로 구성됩니다. 해당 Human.java 프로그램은 com/vamei/society/ 아래에 있어야 합니다. 클래스는 전체 경로로 식별되므로 Java가 혼동되지 않고 다른 패키지에 동일한 이름을 가진 클래스가 있을 수 있습니다. 예를 들어 com.vamei.society.Human과 com.vamei.creature.Human은 서로 다른 두 클래스입니다.
한 가지 더 자세히 살펴보겠습니다. Human 클래스는 public이고 해당 생성자도 public이므로 다른 개체에서 이 클래스를 호출할 수 있습니다. 이전에 말했듯이 Java 파일에는 공용 클래스가 하나만 있을 수 있으며 클래스는 .java 파일과 동일한 이름을 가져야 합니다. 클래스에는 실제로 권한을 나타내는 public 키워드가 필요하지 않습니다. 클래스는 해당 클래스가 위치한 패키지에 표시됩니다. 즉, 패키지의 다른 Java 프로그램이 클래스에 액세스할 수 있습니다. 이는 Java의 기본 액세스입니다.
마찬가지로 개체의 멤버도 기본 권한을 가질 수 있습니다(패키지에서 볼 수 있음). 예를 들어, getHeight() 메서드 앞에 있는 public 키워드를 제거합니다.
패키지 통화
Human.java가 컴파일한 Human.class를 해당 폴더에 넣어주기만 하면 됩니다. 예를 들어 Human.class를 com/vamei/society/에 넣었습니다. 실제로 .java 파일을 해당 경로에 넣을 수도 있으며, Java를 사용하면 자동으로 컴파일됩니다.
전체 패키지(즉, com 폴더)가 현재 작업 경로에 있는 경우 패키지를 사용하는 데 다음 TestAgain.java와 같은 특별한 설정이 필요하지 않습니다.
다음과 같이 코드 코드를 복사합니다.
import com.vamei.society.*;
공개 클래스 TestAgain
{
공개 정적 무효 메인(문자열[] 인수)
{
인간 aPerson = 새로운 인간(180);
System.out.println(aPerson.getHeight());
}
}
import는 경로를 식별하는 데 사용됩니다. import 문을 사용하여 해당 경로 아래에 클래스를 도입할 수 있습니다. *학회 폴더의 모든 수업 소개를 나타냅니다. TestAgain에서는 Human 클래스를 직접 사용합니다.
또한 클래스에 대한 전체 경로를 제공할 수도 있습니다. 이는 다음과 같이 이름은 같지만 경로가 다른 클래스를 구별할 수 있습니다.
다음과 같이 코드 코드를 복사합니다.
공개 클래스 TestAgain
{
공개 정적 무효 메인(문자열[] 인수)
{
com.vamei.society.Human aPerson =
새로운 com.vamei.society.Human(180);
System.out.println(aPerson.getHeight());
}
}
완전한 클래스 경로를 제공하므로 import 문을 사용할 필요가 없습니다.
패키지가 현재 작업 경로에 배치되지 않은 경우 패키지를 사용할 때 Java에 알려야 합니다. 예를 들어 패키지를 /home/vamei/javapackage에 넣습니다. 따라서 Human.class는 /home/vamei/javapackage/com/vamei/society/Human.class에 있고 작업 경로는 /home/vamei입니다. 이 방법으로는 패키지를 찾을 수 없습니다. 한 가지 방법은 -classpath를 사용하여 javac 및 java를 사용할 때 패키지가 있는 폴더 경로를 지정하는 것입니다. 예를 들면 다음과 같습니다.
다음과 같이 코드 코드를 복사합니다.
$javac -classpath /home/vamei/java패키지:.
$java -classpath /home/vamei/javapackage:.
/home/vamei/javapackage 및 작업 경로(.)에서 패키지를 찾으세요. Java는 /home/vamei/javapackage에서 Human 클래스를 찾을 수 있고 .
또한, 매번 -classpath 옵션을 입력하지 않고도 시스템의 CLASSPATH 환경 변수를 설정하고 위 경로를 변수에 추가할 수도 있습니다.
패키지와 유사한 메커니즘은 Python의 가져오기 메커니즘과 같은 다른 언어에서도 일반적입니다. 그들은 모두 기존 프로그램을 더 잘 구성하고 사용하는 것에 관한 것입니다. 패키지를 사용하면 Java 프로그램을 쉽게 확장하고 기존 Java 프로그램 라이브러리를 사용할 수 있습니다. 패키지는 .class 파일을 관리합니다. Java는 "한 번 컴파일하고 어디서나 실행"(한 번 컴파일하고 어디서나 실행)으로 알려져 있습니다. .class 파일은 Java Virtual Machine(JVM, Java Virtual Machine)이 장착된 모든 플랫폼에서 실행될 수 있으며, 이는 시스템 차이로 인한 프로그램 포팅 문제를 극복하는 데 도움이 됩니다.
시스템 간의 차이는 매우 클 수 있습니다. C 언어로 프로그램을 작성하는 경우 소스 프로그램은 다양한 하드웨어 조건에 맞게 각 플랫폼에서 다시 컴파일되어야 합니다. Java 가상 머신은 플랫폼과 Java 세계를 연결하며 하드웨어와 프로그래밍 논리 사이의 중간 계층을 형성합니다. JVM은 하드웨어 차이점을 숨기고 프로그래머에게 "표준" Java 세계를 제공합니다. .class 파일은 이 Java 세계에서 유통되는 통화로 간주될 수 있습니다. JVM 인프라 및 패키지 관리 지원을 통해 Java 프로그램은 우수한 이식성을 달성합니다.
요약
패키지, 수입
기본 권한: 패키지에 표시
-클래스 경로, 클래스 경로