Skip to Content
Suffering builds character

8. package keyword

1. package

일반적으로 하나의 공간에 파일(File)이 너무 많으면 별도의 폴더(Folder)를 생성하여 그룹화하여 관리하는 것처럼,

프로젝트 개발 과정에서는 최소 수십개 이상의 파일(.java, .class)이 만들어지는데, 이러한 파일들을 공통 영역(비슷한 관심사)끼리 묶어서 관리해주는 것이 패키지(Package)

편집기에서 패키지를 생성하면, 시스템 상의 프로젝트 내부에서는 폴더 형태로 변환됨 → 자신의 시스템(OS) 상에 실제로 위치한 프로젝트 폴더 디렉토리 경로에서 직접 확인 가능

“패키지는 결국 폴더 디렉토리”

package

클래스의 전체 이름(full name)은 사실 아래와 같은 형태를 가지고 있음

"상위패키지.하위패키지.클래스"

ex) 만약 패키지명이 dev.todo이고, 해당 패키지 내부에 App.java가 있을 경우, App 클래스의 full namedev.todo.App

2. package의 효용

2-1. 서로 다른 패키지에 동일한 이름의 클래스를 구분 가능

dev.syntax.kr 패키지 내에 작성된 Mouse.java

Mouse.java
package dev.syntax.kr; public class Mouse { int age; }

dev.syntax.us 패키지 내에 작성된 Mouse.java

Mouse.java
package dev.syntax.us; public class Mouse { int age; }

dev.syntax.ja 패키지 내에 작성된 Main 클래스

Main.java
import dev.syntax.kr.Mouse; public class Main { Mouse koreanMouse = new Mouse(5); }

Mouse.java가 서로 다른 패키지에 있기 때문에 특정 패키지 내 Mouse 클래스를 지정하여 사용할 수 있음

3. package의 선언

패키지는 클래스를 컴파일하는 과정에서 자동으로 생성되는 폴더이기 때문에 개발자가 직접 작성할 일은 거의 없음

{프로젝트명}/src/dev/syntax/oop/ 경로에 존재하는 Mouse.java

package dev.syntax.oop; public class Mouse { // ... }

4. package 네이밍 컨벤션

이러한 패키지에도 일반적인 네이밍 규칙이 있음

  1. “숫자”로 시작하면 안됨
  2. ”_“와 ”$“를 제외한 특수 문자 사용 불가
  3. “java”로 시작하는 패키지는 “자바 표준 API에서만 사용”하므로 사용 불가 ex) (java.lang, java.util..)
  4. “모두 소문자로 작성”

패키지명은 주로 회사의 도메인 이름으로 작성
→ 도메인 이름은 등록 기관에서 인증 받은 고유한 이름이기 때문

ex) www.naver.com을 사용할 경우, 역순으로 작성하여 포괄적인 이름(com, org, dev, io 등)을 상위 패키지가 되도록 하고, 마지막 이름은 프로젝트 이름으로 설정하는 편

"com.naver.search" "com.coupang.order" "org.eclipse.projectname" // ...
Last updated on