패키지 보충자료
패키지 (Package)
1. 패키지란?
디렉토리(폴더) 개념:
클래스 파일을 디렉토리 구조로 그룹화하여 관리하는 방식입니다.
대규모 프로젝트에서 클래스를 체계적으로 관리하기 위해 사용됩니다.
패키지 선언:
패키지를 사용하려면 코드의 첫 줄에 반드시
package 패키지명;
을 선언해야 합니다.
2. 패키지의 특징
계층 구조:
패키지는 디렉토리 구조를 기반으로 계층적으로 구성됩니다.
하위 디렉토리에서 추가적인 클래스를 정의할 수 있습니다.
클래스 이름 충돌 방지:
동일한 클래스 이름이 존재하더라도, 각 패키지가 서로 다른 네임스페이스로 구분되어 충돌을 방지합니다.
클래스 경로:
패키지에 포함된 클래스는 **풀 네임(Fully Qualified Name)**으로 접근할 수 있습니다.
예:
com.example.myapp.ClassName
같은 패키지 내 접근:
동일한 패키지에 속한 클래스는 import 없이 서로를 사용할 수 있습니다.
패키지 이름 작성 규칙:
소문자로 작성합니다.
회사 도메인을 거꾸로 작성한 뒤, 프로젝트와 관련된 이름을 덧붙입니다.
예:
com.example.myapp
계층 구조 규칙:
모든 패키지는 서로 다른 계층 구조를 가져야 합니다.
com.example.app1
과com.example.app2
는 서로 다른 패키지입니다.
3. Import 키워드
사용 목적:
다른 패키지에 있는 클래스를 사용하기 위해 선언합니다.
사용법:
특정 클래스만 가져오기:
import 패키지명.클래스명;
패키지의 모든 클래스 가져오기:
import 패키지명.*;
주의사항:
애스터리스크(*)로 가져오면 코드 가독성이 떨어질 수 있으니 필요한 클래스만 명시적으로 가져오는 것이 권장됩니다.
(1) 패키지 선언 및 계층 구조
디렉토리 구조
MainApp.java
Utility.java
(2) Fully Qualified Name으로 접근
import
를 사용하지 않고, 풀 네임을 이용해 클래스에 접근할 수도 있습니다.
(3) 같은 패키지 내 경로 생략
같은 패키지에 있는 클래스는 import
없이 바로 사용할 수 있습니다.
디렉토리 구조
MainApp.java
Helper.java
(4) 애스터리스크(*)로 모든 클래스 가져오기
5. 패키지 설계 시 주의점
패키지 이름 충돌 방지:
고유한 이름을 사용하기 위해 회사 도메인 기반으로 패키지 이름을 작성합니다.
예:
org.companyname.projectname
패키지 계층 구조:
클래스가 많아질 경우 계층 구조를 적절히 설계하여 관리 효율성을 높입니다.
예:
com.example.app.ui
,com.example.app.service
,com.example.app.util
Import 사용 시 가독성 유지:
애스터리스크(*)는 지양하고 필요한 클래스만 명시적으로 가져옵니다.
Last updated