산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

자바 - 패키지

패키지는 이름 충돌을 방지하고 액세스를 제어하며 클래스, 인터페이스, 열거 및 주석의 검색/찾기 및 사용을 보다 쉽게 ​​하기 위해 Java에서 사용됩니다.

패키지 액세스 보호 및 네임스페이스 관리를 제공하는 관련 유형(클래스, 인터페이스, 열거 및 주석)의 그룹으로 정의할 수 있습니다.

Java의 기존 패키지 중 일부는 -

프로그래머는 자신의 패키지를 정의하여 클래스/인터페이스 등의 그룹을 묶을 수 있습니다. 프로그래머가 클래스, 인터페이스, 열거 및 주석이 관련되어 있는지 쉽게 결정할 수 있도록 사용자가 구현한 관련 클래스를 그룹화하는 것이 좋습니다.

패키지가 새 네임스페이스를 생성하기 때문에 다른 패키지의 이름과 충돌하는 이름이 없습니다. 패키지를 이용하면 접근통제를 제공하기도 쉽고 관련 클래스를 찾기도 쉬워진다.

패키지 만들기

패키지를 만드는 동안 패키지 이름을 선택하고 패키지를 포함해야 합니다. 패키지에 포함하려는 클래스, 인터페이스, 열거 및 주석 유형이 포함된 모든 소스 파일의 맨 위에 해당 이름과 함께 문을 추가합니다.

패키지 문은 소스 파일의 첫 번째 줄에 있어야 합니다. 각 소스 파일에는 하나의 패키지 문만 있을 수 있으며 파일의 모든 유형에 적용됩니다.

패키지 문이 사용되지 않으면 클래스, 인터페이스, 열거 및 주석 유형이 현재 기본 패키지에 배치됩니다.

패키지 문으로 자바 프로그램을 컴파일하려면 아래와 같이 -d 옵션을 사용해야 합니다.

javac -d Destination_folder file_name.java

그런 다음 지정된 대상에 지정된 패키지 이름의 폴더가 생성되고 해당 폴더에 컴파일된 클래스 파일이 배치됩니다.

예시

animals라는 패키지를 생성하는 예를 살펴보겠습니다. . 클래스 및 인터페이스 이름과의 충돌을 피하기 위해 패키지 이름을 소문자로 사용하는 것이 좋습니다.

다음 패키지 예제에는 animals라는 인터페이스가 포함되어 있습니다. -

/* File name : Animal.java */
package animals;

interface Animal {
   public void eat();
   public void travel();
}

이제 동일한 패키지 animals에서 위의 인터페이스를 구현해 보겠습니다. -

package animals;
/* File name : MammalInt.java */

public class MammalInt implements Animal {

   public void eat() {
      System.out.println("Mammal eats");
   }

   public void travel() {
      System.out.println("Mammal travels");
   } 

   public int noOfLegs() {
      return 0;
   }

   public static void main(String args[]) {
      MammalInt m = new MammalInt();
      m.eat();
      m.travel();
   }
} 

이제 아래와 같이 자바 파일을 컴파일하십시오 -

$ javac -d . Animal.java 
$ javac -d . MammalInt.java

이제 animals라는 이름의 패키지/폴더 현재 디렉토리에 생성되고 이 클래스 파일은 아래와 같이 그 안에 배치됩니다.

패키지 내에서 클래스 파일을 실행하면 아래와 같은 결과를 얻을 수 있습니다.

Mammal eats
Mammal travels

가져오기 키워드

클래스가 동일한 패키지의 다른 클래스를 사용하려는 경우 패키지 이름을 사용할 필요가 없습니다. 동일한 패키지의 클래스는 특별한 구문 없이 서로를 찾습니다.

예시

여기에서 이미 Employee가 포함된 급여 패키지에 Boss라는 클래스가 추가되었습니다. 그러면 Boss는 다음 Boss 클래스에서 볼 수 있듯이 급여 접두사를 사용하지 않고 Employee 클래스를 참조할 수 있습니다.

package payroll;
public class Boss {
   public void payEmployee(Employee e) {
      e.mailCheck();
   }
}

Employee 클래스가 급여 패키지에 없으면 어떻게 됩니까? 그러면 Boss 클래스는 다른 패키지의 클래스를 참조하기 위해 다음 기술 중 하나를 사용해야 합니다.

payroll.Employee
import payroll.*;
import payroll.Employee;

참고 − 클래스 파일에는 여러 개의 가져오기 문이 포함될 수 있습니다. import 문은 패키지 문 뒤와 클래스 선언 앞에 나타나야 합니다.

패키지의 디렉토리 구조

클래스가 패키지에 배치될 때 두 가지 주요 결과가 발생합니다 -

다음은 Java에서 파일을 관리하는 간단한 방법입니다 -

이름이 유형의 단순 이름이고 확장자가 .java인 텍스트 파일에 클래스, 인터페이스, 열거 또는 주석 유형에 대한 소스 코드를 넣습니다. .

예를 들어 -

// File Name :  Car.java
package vehicle;

public class Car {
   // Class implementation.   
}

이제, 그 이름이 클래스가 속한 패키지의 이름을 반영하는 디렉토리에 소스 파일을 넣으십시오 -

....\vehicle\Car.java

이제 정규화된 클래스 이름과 경로 이름은 다음과 같습니다. -

일반적으로 회사는 패키지 이름에 역방향 인터넷 도메인 이름을 사용합니다.

− 회사의 인터넷 도메인 이름은 apple.com이고 모든 패키지 이름은 com.apple로 시작합니다. 패키지 이름의 각 구성 요소는 하위 디렉터리에 해당합니다.

− 회사에는 Dell.java 소스 파일이 포함된 com.apple.computers 패키지가 있었습니다. 이 패키지는 다음과 같은 일련의 하위 디렉토리에 포함됩니다. −

....\com\apple\computers\Dell.java

컴파일 시 컴파일러는 각 클래스, 인터페이스 및 여기에 정의된 열거형에 대해 다른 출력 파일을 만듭니다. 출력 파일의 기본 이름은 유형의 이름이고 확장자는 .class입니다. .

예를 들어 -

// File Name: Dell.java
package com.apple.computers;

public class Dell {
}

class Ups {
}

이제 -d 옵션을 사용하여 이 파일을 다음과 같이 컴파일하십시오 -

$javac -d . Dell.java

파일은 다음과 같이 컴파일됩니다 -

.\com\apple\computers\Dell.class
.\com\apple\computers\Ups.class

\com\apple\computers\에 정의된 모든 클래스 또는 인터페이스를 가져올 수 있습니다. 다음과 같이 -

import com.apple.computers.*;

.java 소스 파일과 마찬가지로 컴파일된 .class 파일은 패키지 이름을 반영하는 일련의 디렉토리에 있어야 합니다. 그러나 .class 파일의 경로는 .java 소스 파일의 경로와 같을 필요는 없습니다. 다음과 같이 소스 및 클래스 디렉토리를 별도로 정렬할 수 있습니다.

<path-one>\sources\com\apple\computers\Dell.java

<path-two>\classes\com\apple\computers\Dell.class

이렇게 하면 소스를 공개하지 않고 다른 프로그래머에게 클래스 디렉토리에 대한 액세스 권한을 부여할 수 있습니다. 또한 컴파일러와 JVM(Java Virtual Machine)이 프로그램에서 사용하는 모든 유형을 찾을 수 있도록 이러한 방식으로 소스 및 클래스 파일을 관리해야 합니다.

클래스 디렉토리의 전체 경로인 \classes는 클래스 경로라고 하며 CLASSPATH 시스템 변수로 설정됩니다. 컴파일러와 JVM 모두 클래스 경로에 패키지 이름을 추가하여 .class 파일에 대한 경로를 구성합니다.

\classes가 클래스 경로이고 패키지 이름이 com.apple.computers라고 가정하면 컴파일러와 JVM은 \classes\com\apple\computers에서 .class 파일을 찾습니다.

클래스 경로에는 여러 경로가 포함될 수 있습니다. 여러 경로는 세미콜론(Windows) 또는 콜론(Unix)으로 구분해야 합니다. 기본적으로 컴파일러와 JVM은 현재 디렉토리와 Java 플랫폼 클래스가 포함된 JAR 파일을 검색하여 이러한 디렉토리가 자동으로 클래스 경로에 있도록 합니다.

CLASSPATH 시스템 변수 설정

현재 CLASSPATH 변수를 표시하려면 Windows 및 UNIX(Bourne shell)에서 다음 명령을 사용하십시오. -

CLASSPATH 변수의 현재 내용을 삭제하려면 -

를 사용하십시오.

CLASSPATH 변수를 설정하려면 -


java

  1. 파이썬 패키지
  2. 자바 최종 키워드
  3. 자바 instanceof 연산자
  4. 자바 중첩 정적 클래스
  5. 자바 익명 클래스
  6. 자바 싱글톤 클래스
  7. 자바 리플렉션
  8. 자바 ObjectOutputStream 클래스
  9. 자바 제네릭
  10. 자바 파일 클래스