Latest web development tutorials

Java 패키지 (패키지)

더 클래스를 구성하기 위해 자바 공간의 클래스 이름 사이의 차이에 대한 패키지 메커니즘을 제공한다.

패키지의 역할

  • 같은 패키지에있는 클래스 또는 인터페이스의 기능이 유사하거나 관련 조직은 찾을 쉽게 클래스를 사용할 수 있습니다.
  • 도 2는 동일한 폴더로, 패키지는 저장 디렉토리 트리를 사용했다. 같은 패키지 이름 클래스는 클래스의 다른 패키지 이름이 동시에 동일한 클래스 이름 패키지 두 가지 유형의 호출 동안, 패키지 이름 구별을 추가해야 동일 다르다. 따라서, 패키지 이름 충돌을 방지한다.
  • 3 패키지에는 액세스 권한이 클래스는 클래스의 패키지를 액세스하는 패키지에 대한 액세스를 정의한다.

자바는이 메커니즘은 이름 충돌, 액세스 제어, 검색을 제공을 방지하고 클래스 (클래스), 인터페이스, 열거 (열거)과 주석 (주석) 등의 위치를 ​​설계 패키지 (패키지)를 사용합니다.

패키지 문 구문은 다음과 같습니다

package pkg1[.pkg2[.pkg3…]];

예를 들어, 파일 컨텐츠 Something.java

package net.java.util
public class Something{
   ...
}

그런 다음 경로 그물 / 자바 / UTIL / Something.java 이렇게 저장해야합니다. 패키지 (패키지)의 역할은 다른 Java 프로그램에 의해 호출 쉽게 저장된 다른 Java 프로그램을 분류한다.

패키지 (패키지)는 이러한 유형의 접속 보호 및 공간 관리 기능을 제공하도록 상호 접속 유형의 집합 (클래스, 인터페이스, 열거 및 주석)로 정의 될 수있다.

다음은 패키지에 자바의 일부입니다 :

  • java.lang- 패키지 기본 클래스
  • Java.io- 기능은 입력 및 출력 기능을 포함

개발자는 패키지의 클래스와 인터페이스, 자신의 세트를 넣어 자신 만의 패키지를 정의 할 수 있습니다. 그리고 실제 개발에 당신이 구현 클래스를 완료하면 다른 프로그래머들이보다 쉽게 ​​클래스, 인터페이스, 열거, 의견이 관련있는 확인할 수 있도록 관련 클래스를 그룹화, 그렇게하도록 격려하는 것입니다 .

패키지는 너무 다른 패키지 이름으로 이름 충돌없이 새 네임 스페이스 (공간)을 생성하기 때문이다. 액세스 제어를 구현하고, 해당 클래스를 쉽게 찾을 수 있도록 패키지기구 쉽게 사용한다.


패키지를 만듭니다

패키지를 만들고,이 패키지에 대한 적절한 이름을 가지고해야합니다. 다른 클래스를 포함하는 소스 파일이 패키지, 인터페이스, 주석 또는 열거 타입을 제공하는 경우, 패키지는이 선언이 소스 파일의 시작 부분에 배치되어야한다.

각각의 소스 파일을 하나의 패키지에 문이 수에 대한 패키지는 소스 파일의 첫 번째 행에 선언되어야 각 유형의 파일이 적용된다.

소스 파일에 패키지 문을 사용하지 않는 경우 등 클래스, 함수, 열거, 주석의 다음 하나에 이름이없는 패키지 (이름이없는 패키지)에 배치됩니다.

의이 동물이라는 패키지를 생성하는 예를 살펴 보자. 일반적으로 명명 클래스, 인터페이스, 그리고 갈등의 이름을 방지하기 위해 소문자를 사용합니다.

패키지 인터페이스 동물 (인터페이스)에 가입 :

/* 文件名: Animal.java */
package animals;

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

다음으로, 인터페이스를 구현하는 같은 패키지에 추가

package animals;

/* 文件名 : 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();
   }
} 

그런 다음,이 두 파일을 컴파일하고 하위 디렉토리라는 동물에 넣어. 실행하려면 다음 명령을 사용하여

$ mkdir animals
$ cp Animal.class  MammalInt.class animals
$ java animals/MammalInt
Mammal eats
Mammal travel

수입 키워드

패키지의 멤버를 사용할 수 있도록하기 위해, 우리는 명시 적으로 자바 프로그램에서 패키지를 가져와야합니다. 은 "가져 오기"문을 사용하여이 기능을 수행 할 수 있습니다.

자바 소스 파일 가져 오기 문이 여러 수 있습니다, 당신은 할 수 없습니다, 패키지 문 다음에 이전에 정의 된 클래스에 위치한다, 그것의 구문은 다음과 같습니다

import package1[.package2…].(classname|*);

패키지, 다른 클래스에이 패키지를 사용할 클래스 경우, 패키지 이름은 생략 될 수있다.

다음 급여 패키지는 이미 Employee 클래스를 포함하고 보스 급여 패키지에 클래스를 추가합니다. 보스 직원 클래스 참조 클래스 급여 프리픽스 인스턴스를 사용할 수 없을 때 보스 클래스는 다음과 같다.

package payroll;

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

클래스는 보스 급여 패키지는 무슨 수없는 경우? 보스 클래스는 패키지에 다른 클래스를 참조하려면 다음 방법 중 하나를 사용해야합니다

같은 클래스의 설명의 전체 이름을 사용합니다 :

payroll.Employee

수입 키워드의 도입으로, "*"와일드 카드를 사용

import payroll.*;

직원 클래스 가져 오기 키워드를 소개합니다 사용

import payroll.Employee;

참고 :

클래스 파일은 수입 신고의 수를 포함 할 수 있습니다. 수입 신고는 클래스 선언하기 전에, 패키지 문 뒤에 있어야합니다.


패키지 디렉토리 구조

패키지에 클래스 두 가지 결과를 :

  • 앞서 설명한 바와 같이 패키지 이름, 클래스 이름의 일부가됩니다.
  • 패키지 이름은 동일한 디렉토리 구조 일치에 해당하는 바이트 코드와 일치해야합니다.

다음은 자바 파일을 관리하는 간단한 방법은 다음과 같습니다

클래스, 인터페이스 및 텍스트 소스 코드의 다른 타입이 파일의 이름 유형 이름 및 확장 된 .java. 예를 들면 :

// 文件名 :  Car.java

package vehicle;

public class Car {
   // 类实现  
}

다음에, 디렉토리의 소스 파일 자체 패키지의 대응하는 클래스의 디렉토리 이름.

....\vehicle\Car.java

이제 올바른 클래스 이름과 경로는 다음과 같이 표시됩니다

  • 클래스 이름 -> vehicle.Car

  • 경로 이름 - (Windows에서)> 차량 \의 Car.java

통상적으로, 회사는, 예를 들어, 패키지 이름과 같은 인터넷 도메인 이름의 그것의 반전 된 형태를 사용하여 인터넷 도메인 apple.com이며, 모든 패키지 이름 com.apple 시작에있다. 하위 디렉토리의 일부에 해당하는 각 패키지 이름입니다.

예를 들어이 회사는 com.apple.computers에게 알려진 Dell.java 소스 파일이 포함 된 패키지를 가지고, 하위 디렉토리의 다음과 같은 일련의 같아야 대응 :

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

컴파일 시간 컴파일러 다른 출력 파일을 생성하고, 출력 파일의 이름이 유형의 이름이 각각의 클래스 인터페이스의 패키지 형태로 정의되며, 확장 된 .class 접미사로서 첨가된다. 예를 들면 :

// 文件名: 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 사과 \ 컴퓨터 \ \ 인터페이스에 정의 된 클래스 :

import com.apple.computers.*;

소스 파일을 된 .java한다, 그들은 패키지의 이름과 일치해야 디렉터리에 저장 한 후 class 파일은 컴파일. 그러나, 경로는 경로가 된 .java 같은 대응을 .class 파일을 필요로하지 않습니다. 당신은 별도의 소스와 클래스 디렉토리를 정렬 할 수 있습니다.

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

이러한 방법으로, 당신은 다른 프로그래머에 클래스 디렉토리를 공유하기보다는 자신의 소스를 공개 할 수 있습니다. 이러한 방식으로 소스를 관리 클래스 파일이 컴파일 및 자바 가상 머신 (JVM)는이 프로그램에서 사용되는 모든 형태를 확인할 수 있도록 할 수있다.

클래스 경로라는 절대 디렉토리 경로 클래스입니다. 시스템 변수 CLASSPATH에 설정합니다. 컴파일러 및 클래스 경로 이후로 건설 된 .class 파일의 패키지 이름으로 자바 가상 머신.

<경로 -이> \ 수업하는 클래스 경로, 패키지 이름이 com.apple.computers이며, 컴파일러와 JVM이 <경로 두> \ 클래스에있을 것 \ 닷컴 사과 \의 compters가 .class 파일을 찾을 \.

클래스 경로는 여러 경로를 포함 할 수 있습니다. 다중 경로 구분 기호로 구분해야합니다. 기본적으로 컴파일러와 JVM은 현재 디렉토리를 찾을 수 있습니다. 그들이 클래스 경로의 디렉토리에 디폴트 있도록 해당 클래스에있어서, Java 플랫폼을 포함 JAR 파일.


설정 CLASSPATH 시스템 변수

현재 CLASSPATH 변수를 표시하려면 다음 명령을 사용합니다 :

  • Windows 플랫폼 (DOS 명령 행) -> C : \> 설정 CLASSPATH
  • UNIX 플랫폼 (Bourne 씨가 아래 쉘) -> % 에코 $의 CLASSPATH
현재 CLASSPATH 변수 내용을 제거합니다
  • Windows 플랫폼 (DOS 명령 행) -> C : \> 설정 CLASSPATH =
  • UNIX 플랫폼 (Bourne 씨가 아래 쉘) -> % 해제 CLASSPATH, 수출 CLASSPATH

CLASSPATH 변수를 설정 :

  • Windows 플랫폼 (DOS 명령 행) -> 설정 CLASSPATH = C : \ 사용자 \ 잭 \ 자바 \ 클래스
  • UNIX 플랫폼 (Bourne 씨가 아래 쉘) -> %의 CLASSPATH = / 가정 / 잭 / 자바 / 클래스, 수출 CLASSPATH