Claire's Study Note

[Java 기본] 5. 패키지

by Hi.Claire
반응형

🖥️ 김영한의 실전 자바 - 기본편 (김영한, 인프런)

 

섹션5. 패키지

5-1. 패키지(package)

패키지(package)

컴퓨터는 보통 파일을 분류하기 위해 폴더, 디렉토리라는 개념을 제공한다.

자바도 이런 개념을 제공하는데 이것이 바로 패키지(package)이다.

 

(예시) 패키지와 클래스

  • user
    • User.java
    • UserManager.java
    • UserHistory.java
  • product
    • Product.java
    • ProductCatalog.java
    • ProductImage.java
  • order
    • Order.java
    • OrderService.java
    • OrderHistory.java
  • cart
    • ShoppingCart.java
    • CartItem.java
  • payment
    • Payment.java
    • PaymentHistory.java
  • shipping
    • Shipment.java
    • ShipmentTracker.java

 

5-2. import

한 클래스에서 다른 패키지에 있는 클래스를 사용할 때에는 패키지 전체 경로를 포함한 클래스를 적어주어야 한다.

하지만 항상 이렇게 사용하는 것이 불편하므로 import를 사용한다.

import를 사용하면 다른 패키지에 있는 클래스를 가져와서 사용할 수 있다.

 

(예시) import 사용

package pack;

import pack.a.User;

public class PackageMain1 {
    public static void main(String[] args) {
        Data data = new Data();
        User user = new User();
    }
}

PackageMain1과 같은 pack 패키지에 있는 Data 클래스의 생성자를 호출할 때에는 패키지 경로를 생략할 수 있다.

하지만 pack.a 패키지에 있는 User 클래스의 생성자를 호출할 때에는 import를 사용해야 한다.

 

(참고) 특정 패키지에 있는 모든 클래스를 포함해서 사용하고 싶으면 import 시점에 *을 사용한다.

package pack;

import pack.a.*; // pack.a의 모든 클래스 사용

public class PackageMain1 {
    public static void main(String[] args) {
        Data data = new Data();
        User user = new User();
    }
}

패키지 pack Data 생성
패키지 pack.a User 생성

 

클래스 이름 중복

  • 패키지 덕분에 클래스 이름이 같아도 패키지 이름으로 구분해서 같은 이름의 클래스를 사용할 수 있다.
  • 이때, 같은 이름의 클래스를 둘 다 사용하고 싶으면 자주 사용하는 클래스를 import하고 나머지는 패키지를 포함한 전체 경로를 적어주면 된다.

(예시) 클래스 이름 중복

package pack;

import pack.a.User;

public class PackageMain2 {
    public static void main(String[] args) {
        User userA = new User();
        pack.b.User userB = new pack.b.User();
    }
}

패키지 pack.a User 생성
패키지 pack.b User 생성

 

5-3. 패키지 규칙

패키지 규칙

  • 패키지의 이름과 위치는 폴더(디렉토리)의 위치와 같아야 한다.
  • 패키지 이름은 모두 소문자를 사용한다. (관례)
  • 패키지 이름의 앞 부분에는 일반적으로 회사의 도메인 이름을 거꾸로 사용한다. (관례)
    • (예시) com.tistory.moominie
  • 패키지는 보통 계층 구조를 이루는데, 이렇게 계층 구조를 이루더라도 모든 패키지는 서로 다른 패키지이다.
    • (예시) pack, pack.a, pack.b 세 개는 서로 완전히 다른 패키지이다. 따라서 pack 패키지에서 pack.a 패키지의 클래스가 필요하면 따로 import해서 사용해야 한다. 반대도 마찬가지다.
  • 패키지를 구성할 때 서로 관련된 클래스는 하나의 패키지에 모으고, 관련이 적은 클래스는 다른 패키지로 분류하는 것이 좋다.

 

반응형

블로그의 정보

Claire's Study Note

Hi.Claire

활동하기