본문 바로가기
개념서/Java

[Java] package와 import

by 사서T 2022. 6. 10.

패키지(package)

   패키지는 클래스의 묶음으로 클래스 또는 인터페이스를 포함시킬 수 있다. 서로 관련된 클래스들끼리 그룹 단위로 묶어 효율적으로 관리할 수 있다. 같은 이름의 클래스라도 서로 다른 패키지에 존재하는 것이 가능하므로 충돌을 피할 수 있다.

   클래스가 물리적으로 하나의 클래스 파일(.class)인 것과 같이 패키지는 물리적으로 하나의 디렉토리이다. 디렉토리가 하위 디렉토리를 가질 수 있는 것처럼, 패키지도 다른 패키지를 포함할 수 있으며 '.'으로 구분한다. 예를 들면 java.lang 패키지에서 lang 패키지는 java 패키지의 하위 패키지이다.

   패키지에 대해 간단히 정리하면 다음과 같다.

 

  • 'package 패키지명;' 의 형태로 선언되며 반드시 주석과 공백을 제외한 첫 번째 문장이어야 하고, 하나의 소스파일에 단 한 번만 선언될 수 있다.
  • 패키지명은 대소문자를 모두 허용하지만, 클래스명과 쉽게 구분하기 위해 소문자로 하는 것을 원칙으로 한다.
  • 모든 클래스는 반드시 하나의 패키지에 포함되어야 한다.(패키지를 선언하지 않으면 자동적으로 '이름없는 패키지'에 속한다.)
  • 하나의 소스파일에는 첫 번째 문장으로 단 한 번의 패키지 선언만을 허용한다.
  • 모든 클래스는 반드시 하나의 패키지에 속해야 한다.
  • 패키지는 '.'을 구분자로 하여 계층구조를 구성할 수 있다.
  • 패키지는 물리적으로 클래스 파일(.class)을 포함하는 하나의 디렉토리이다.

임포트(import)

   소스코드 작성 시에 다른 패키지의 클래스를 사용하려면 패키지명이 포함된 클래스 이름을 사용해야 한다. 이때 import 문을 사용하여 클래스의 패키지를 미리 명시해주면 소스코드에 사용되는 클래스 이름에서 패키지명을 생략할 수 있다. 즉, 임포트문은 컴파일러에게 소스파일에 사용된 클래스의 패키지에 대한 정보를 제공하는 것(네임스페이스 제공)이다. 컴파일 시에 컴파일러는 임포트문을 통해 사용된 클래스들의 앞에 패키지명을 붙여 준다.

   임포트문의 선언은 다음과 같다.

 

  • import 패키지명.클래스명; : 패키지 내의 특정 클래스
  • import 패키지명.*; : 패키지 내의 모든 클래스

 

<일반적인 소스파일의 구성 순서>

package문
import문
클래스 선언

 

※ static import 문을 사용하면 static 멤버를 호출할 때 클래스 이름을 생략할 수 있다. 형태는 'import static 패키지명.클래스명;'이다.


Q&A

Q. 패키지란?

A. 클래스 또는 인터페이스의 묶음으로 서로 관련된 클래스들을 그룹 단위로 묶어 효율적으로 관리하는 것이다.

 

Q. 임포트란?

A. 네임스페이스를 제공하여 사용된 클래스의 패키지를 구분하는 것이다.


참고자료

  • Java의 정석
  • 스프링 입문을 위한 자바 객체지향의 원리와 이해

'개념서 > Java' 카테고리의 다른 글

[Java] 다형성  (0) 2022.06.17
[Java] 제어자  (0) 2022.06.13
[Java] 상속  (0) 2022.06.10
[Java] 객체지향 프로그래밍 I  (0) 2022.06.06
[Java] 조건문, 반복문, 배열  (0) 2022.05.28

댓글