패키지

황상익·2024년 3월 27일

Inflearn JAVA

목록 보기
16/61

패키지 시작
만약 기능이 추가되어서 프로그램이 아주 커지게 된다면??
카테고리를 만들고 분류!

패키지 사용

public class Data {

    public Data(){
        System.out.println("패키지 pack Data 생성");
    }
}

패키지를 사용하는 경우 항상 첫줄 코드에 package pack과 같이 패키지 이름을 적어줌
여기서 pack 패키지에 data 클래스를 생성
이후에 Data 인스턴스가 생성되면 생성자를 통해 정보를 출력

package chap14.a;

public class User {
    public User(){
        System.out.println("패키지 a.회원 생성");
    }
}

pack 하위에 a라는 패키지를 만든다
pack.a 패키지에 User 클래스 생성
User 인스턴스가 생성되면 생성자를 통해 정보를 출력

참고로 생성자에 public을 사용. 생성자를 호출하려면 public 사용

package chap14;

import chap14.a.User;

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

사용자와 같은 위치
같은 패키지에 있는 경우 패키지 경로 생략 가능!
만약 다른 패키지 위치라면 import 형식으로 클래스를 적어주어야 한다.

패키지 import
본 크드와 같이 패키지가 다르고, pack.a.User와 같이 항상 전체 경로를 적어주는 것은 불편
이럴때 import 사용

참고롤 특정 패키지에 포함된 모든 클래스를 포함해서 사용, import* 을 사용하면 된다.

클래스 이름 중복
패키지 덕분에 클래스 이름이 같지 않더라도 패키지 이름을 구분, 같은 이름의 클래스를 사용 가능

package chap14.b;

public class User {
    public User(){
        System.out.println("패키지 b.회원 생성");
    }
}

같은 이름의 클래스가 있다면 import는 둘중 하나만 선택 가능. 이때 자주 사용하는 클래스를 import하고 나머지를 패키지를 포함한 전체 경로를 적어주면 된다.

패키지 규칙
1. 패키지의 이름과 위치는 폴더 위치와 같아야 한다.
2. 패키지 이름은 모든 소문자를 사용
3. 패키지 이름의 앞 부분에는 일반적으로 회사의 도메인 이름을 거꾸로 사용
-> 이부분은 필수는 아니지만, 수 많은 라이브러리가 함께 사용될 경우 같은 패키지에 같은 클래스 이름 존제 가능.

패키지와 계층 구조

a
->b
->c

계층 구조상 a패키지 하위에 a.b & a.c 패키지가 있다. 우리 눈에만 계층구조 처럼 보이지, 완전 서로 다른 패키지

패키지 활용

package chap14.com.helloshop.order;

import chap14.com.helloshop.product.Product;
import chap14.com.helloshop.user.User;

public class OrderService {
    User user = new User();
    Product product = new Product();
    Order order = new Order(user, product);
}
package chap14.com.helloshop.order;

public class OrderHistory {
}
package chap14.com.helloshop.order;

import chap14.com.helloshop.product.Product;
import chap14.com.helloshop.user.User;

public class Order {
    User user;
    Product product;

    public Order(User user, Product product) {
        this.user = user;
        this.product = product;
    }
}
package chap14.com.helloshop.product;

public class Product {
    String productId;
    int price;
}
package chap14.com.helloshop.product;

public class ProductService {
}
profile
개발자를 향해 가는 중입니다~! 항상 겸손

0개의 댓글