hayu's 개발 일지

[TIL]240629 패키지(package)(1) 본문

기술/java

[TIL]240629 패키지(package)(1)

hayu00 2024. 6. 29. 21:05

공부한 내용

패키지(package)

  • 컴퓨터는 보통 파일을 분류하기 위해 폴더, 디렉토리라는 개념을 제공한다. 자바에서 이런 개념을 제공하는 것이 패키지이다.

⇒ 클래스의 묶음으로 클래스를 용도별이나 기능별로 그룹화한 것을 말한다.

예시.

* user
 * User
 * UserManager
 * UserHistory
* product
 * Product
 * ProductCatalog
 * ProductImage
* order
 * Order
 * OrderService
 * OrderHistory
* cart
 * ShoppingCart
 * CartItem
* payment
 * Payment
 * PaymentHistory
* shipping
 * Shipment
 * ShipmentTracker
  • 패키지를 사용하는 경우 항상 코드 첫줄에 package pack과 같이 패키지 이름을 적어주어야 한다.
  • 패키지는 클래스를 유일하게 만들어주는 식별자 역할을 한다.
  • 같은 이름의 클래스 일지라도 서로 다른 패키지에 존재하는 것이 가능하므로,
  • 자신만의 패키지 체계를 유지함으로써 충돌이 발생하지 않는다.

예시

package pack;
public class PackageMain1 {
 public static void main(String[] args) {
 Data data = new Data();
 pack.a.User user = new pack.a.User();
 }
}
// 실행 결과 : 
// 패키지 pack Data 생성
// 패키지 pack.a 회원 생성
package 패키지명;   
  • 사용자와 같은 위치: PackageMain1 과 Data 는 같은 pack 이라는 패키지에 소속되어 있다. 이렇게 같은 패키지에 있는 경우에는 패키지 경로를 생략해도 된다.
  • 사용자와 다른 위치: PackageMain1 과 User 는 서로 다른 패키지다. 이렇게 패키지가 다르면 pack.a.User 와 같이 패키지 전체 경로를 포함해서 클래스를 적어주어야 한다.

패키지 - import

  • 패키지가 다르다고 항상 전체 경로를 적어주는 것은 불편하다. 이 때 import를 사용하면 된다.
package pack;
import pack.a.User;
public class PackageMain2 {
 public static void main(String[] args) {
 Data data = new Data();
 User user = new User(); //import 사용으로 패키지 명 생략 가능
 }
}
// 실행 결과 : 
// 패키지 pack Data 생성
// 패키지 pack.a 회원 생성
  • 코드에서 첫줄에는 package 를 사용하고, 다음 줄에는 import 를 사용할 수 있다.
  • import 를 사용하면 다른 패키지에 있는 클래스를 가져와서 사용할 수 있다.
  • import 를 사용한 덕분에 코드에서는 패키지 명을 생략하고 클래스 이름만 적을 수 있다.
  • 패키지 덕분에 클래스 이름이 같아도 패키지 이름으로 구분해서 같은 이름의 클래스를 사용할 수 있다.

→ 같은 이름이 있다면 import는 둘중 하나만 선택할 수 있다. 이때는 자주 사용하는 클래스를 import하고 나머지를 패키지를 포함한 전체 경로를 적어주면 된다. 물론 둘다 전체 경로를 적어준다면 import를 하지 않아도 된다.

패키지 - 규칙

  • 패키지의 이름과 위치는 폴더(디렉토리) 위치와 같아야 한다. (필수)
  • 패키지 이름은 모두 소문자를 사용한다. (관례)
  • 패키지 이름의 앞 부분에는 일반적으로 회사의 도메인 이름을 거꾸로 사용한다. 예를 들어, com.company.myapp 과 같이 사용한다. (관례)
    • 이 부분은 필수는 아니다. 하지만 수 많은 외부 라이브러리가 함께 사용되면 같은 패키지에 같은 클래스 이름이 존재할 수도 있다. 이렇게 도메인 이름을 거꾸로 사용하면 이런 문제를 방지할 수 있다.
    • 내가 오픈소스나 라이브러리를 만들어서 외부에 제공한다면 꼭 지키는 것이 좋다.
    • 내가 만든 애플리케이션을 다른 곳에 공유하지 않고, 직접 배포한다면 보통 문제가 되지 않는다.

 

 

회고

- 자바에 대한 공부기 부족하다는 사실을 깨닫고 다시한번 차근차근 공부하기로 했다. 

 

참고 자료

- https://velog.io/@hyun_ha/JAVA-%ED%8C%A8%ED%82%A4%EC%A7%80Package