IMG-LOGO
공지사항 :

자바 패키지(package)

lmkfox - 2025-07-19 06:06:02 16 Views 0 Comment

1. 패키지란?

  • 클래스나 인터페이스를 논리적으로 분류해 모듈화하는 기능

  • 다른 클래스와의 이름 충돌을 방지

  • 관련 있는 클래스끼리 조직화하여 유지 보수성 향상

  • 폴더 구조와 패키지 선언이 일치해야 함


2. 패키지 선언

자바 파일의 가장 첫 줄에 package 키워드로 선언합니다.

package com.example.utils;

public class MyClass {
    // 클래스 구현
}

  • 해당 클래스는 com/example/utils/ 디렉토리에 위치해야 함

  • 패키지 이름은 소문자로 구성하는 것이 관례

  • 보통 도메인 이름을 거꾸로 사용하여 고유한 패키지 이름 생성


3. 패키지 사용 방법

1) 패키지에 포함된 클래스 사용

다른 패키지에 있는 클래스를 사용할 때는 import 문을 사용하거나 전체 경로로 명시해야 합니다.

import 사용

import com.example.utils.MyClass;

public class Main {
    public static void main(String[] args) {
        MyClass obj = new MyClass();
    }
}

전체 경로 사용

public class Main {
    public static void main(String[] args) {
        com.example.utils.MyClass obj = new com.example.utils.MyClass();
    }
}


4. 기본 패키지

  • package 선언이 없는 클래스는 기본(default) 패키지에 속합니다.

  • 하지만 기본 패키지는 다른 패키지에서 import할 수 없기 때문에 실제 개발에서는 사용을 피하는 것이 좋습니다.


5. 패키지의 실제 디렉토리 구조

project/
└── src/
    └── com/
        └── example/
            └── utils/
                └── MyClass.java

  • 위 구조에서 MyClass.java 파일은 package com.example.utils; 로 선언되어 있어야 합니다.


6. 자바 API의 패키지 예시

자바 표준 라이브러리도 패키지 구조로 잘 정리되어 있습니다.

패키지 이름

설명

java.lang

자바의 기본 클래스 (자동 import)

java.util

유틸리티 클래스 (List, Map 등)

java.io

입출력 처리

java.net

네트워크 관련 기능

java.sql

데이터베이스 연동


7. 접근 제어자와 패키지

  • default 접근제어자: 같은 패키지 내에서만 접근 가능

  • public 클래스: 모든 패키지에서 접근 가능

  • 즉, 패키지는 접근 제어 범위를 결정하는 논리 경계 역할도 합니다


8. 서브패키지

  • com.example.utils와 com.example.data는 서로 다른 패키지

  • 패키지는 계층적으로 보이지만, 실제로는 독립적인 논리 단위

package com.example;

import com.example.utils.Helper; // 다른 패키지임


9. jar 파일과 패키지

  • 자바 클래스를 배포할 때 .jar 파일에 포함시키면 패키지 구조가 유지됩니다.

  • 예: com/example/MyClass.class 파일이 com.example 패키지로 인식됨


결론

자바의 패키지는 클래스를 조직화하고 관리하는 기본 단위로, 대규모 애플리케이션을 만들 때 매우 중요한 역할을 합니다. 패키지를 제대로 구성하고 사용하는 습관은 코드 유지보수성과 협업 효율을 높이는 데 큰 도움이 됩니다.


댓글