java에서 package란?

허성재's avatar
Aug 14, 2024
java에서 package란?
 

package의 뜻과 활용 방법

1. package의 뜻

Java에서 package는 관련된 클래스와 인터페이스들을 논리적으로 그룹화하는 네임스페이스입니다. 패키지는 클래스 이름의 충돌을 방지하고, 코드를 구조화하고 조직화하는 데 사용됩니다.
Java 프로젝트에서는 수많은 클래스가 사용될 수 있기 때문에, 이 클래스들을 체계적으로 관리할 필요가 있습니다. package를 사용하면 클래스들을 기능이나 목적에 따라 그룹화하여 더 쉽게 관리할 수 있습니다.

예를 들어:

  • java.util: Java에서 제공하는 유틸리티 클래스들을 모아놓은 패키지입니다. 이 패키지에는 ArrayList, HashMap 등 자주 사용하는 클래스들이 포함되어 있습니다.
  • java.io: 입출력 관련 클래스를 모아놓은 패키지로, 파일이나 스트림을 다루는 클래스들이 들어 있습니다.

2. package 선언

Java에서 클래스를 특정 패키지에 포함시키려면, 그 클래스 파일의 최상단에 package 키워드를 사용하여 패키지를 선언합니다. 패키지 이름은 일반적으로 도메인 이름의 역순으로 작성됩니다. 예를 들어, com.example처럼 작성합니다.

예시:

package com.example.utils; public class StringUtils { public static String reverse(String input) { return new StringBuilder(input).reverse().toString(); } }
위 코드에서 StringUtils 클래스는 com.example.utils 패키지에 속해 있습니다. 이 클래스는 문자열을 처리하는 유틸리티 메서드를 제공하는 역할을 합니다.

3. package의 활용 방법

1. 클래스의 조직화 및 관리

패키지를 사용하면 프로젝트를 구조화하여 관련된 클래스들을 묶어 관리할 수 있습니다. 예를 들어, 웹 애플리케이션 프로젝트에서 다음과 같이 패키지를 나눌 수 있습니다:
com.example.webapp ├── controller │ ├── HomeController.java │ └── UserController.java ├── service │ ├── UserService.java │ └── EmailService.java └── model ├── User.java └── Order.java
  • controller 패키지: 웹 요청을 처리하는 컨트롤러 클래스를 포함.
  • service 패키지: 비즈니스 로직을 처리하는 서비스 클래스를 포함.
  • model 패키지: 데이터 모델 클래스들을 포함.
이 구조를 사용하면 프로젝트의 클래스들이 명확하게 분리되어 있어, 찾기 쉽고 관리하기 용이합니다.

2. 클래스 이름 충돌 방지

패키지는 같은 이름을 가진 클래스가 다른 패키지에 존재할 수 있도록 해줍니다. 예를 들어, 두 개의 User 클래스가 com.example.modelcom.other.model에 각각 존재할 수 있습니다.
com.example.model.User user1 = new com.example.model.User(); com.other.model.User user2 = new com.other.model.User();
위 코드에서 User 클래스는 패키지 이름을 통해 서로 구별됩니다. 이는 특히 대규모 프로젝트에서 매우 유용합니다.

3. 접근 제어

패키지는 접근 제어에도 중요한 역할을 합니다. Java에서 접근 제어자는 클래스나 멤버에 대한 접근 범위를 제한하는 데 사용됩니다. 패키지와 관련된 접근 제어자는 다음과 같습니다:
  • default (package-private): 접근 제어자를 명시하지 않으면, 같은 패키지 내에서만 접근할 수 있습니다.
  • public: 모든 패키지에서 접근할 수 있습니다.
  • protected: 같은 패키지 또는 서브클래스에서 접근할 수 있습니다.
예를 들어, 패키지 내에서만 사용되길 원하는 클래스를 default로 선언하면 외부 패키지에서 접근할 수 없게 됩니다.
package com.example.utils; class InternalHelper { // 이 클래스는 com.example.utils 패키지 내에서만 접근 가능 }

4. 패키지 사용 시 유의할 점

  • 패키지 구조와 디렉토리 구조의 일치: Java에서 패키지는 파일 시스템의 디렉토리 구조와 일치해야 합니다. 예를 들어, com.example.utils.StringUtils 클래스는 src/com/example/utils/StringUtils.java에 위치해야 합니다.
  • 패키지 네이밍: 패키지 이름은 소문자로 작성하는 것이 일반적이며, 단어들은 점(.)으로 구분합니다. 도메인 이름의 역순으로 작성하는 것이 권장됩니다(예: com.mycompany.projectname).

5. 패키지와 함께 클래스 사용

다른 패키지에 있는 클래스를 사용하려면 import 문을 사용해야 합니다.

예시:

package com.example.app; import com.example.utils.StringUtils; public class Main { public static void main(String[] args) { String reversed = StringUtils.reverse("Hello"); System.out.println(reversed); // 출력: olleH } }
위 코드에서 import com.example.utils.StringUtils; 문을 사용하여 StringUtils 클래스를 가져옵니다. 그런 다음, Main 클래스에서 이 클래스를 사용할 수 있습니다.
 
Share article

heo-gom