프로그래밍언어/Java
[Java 기본] 패키지
배세
2024. 7. 5. 18:11
패키지
쇼핑몰 시스템을 만든다고 가정해보자. 프로그램이 작고 단순해서 클래스가 몇 개 없다면 상관 없겠지만, 프로그램이 커지면 어떻게 될까?
관련 기능을 분류해서 관리하고 싶을 것이다. 컴퓨터에는 디렉터리라는 기능이 있다. 자바도 이런 개념을 개공하는데 이것이 패키지이다.
패키지 사용
패키지 'pack'을 만들어보자.
package pack;
public class Data {
public Data(){
System.out.println("패키지 pack data 생성");
}
}
상단에 package를 명시해야 한다.
이번에는 위에서 생성한 패키지 하위에 패키지를 만들어보자.
package pack.a;
public class User {
public User(){
System.out.println("패키지 pack.a");
}
}
pack 패키지 안에 PackageMain 클래스 생성
public class PakageMain1 {
public static void main(String[] args) {
Data data = new Data();
pack.a.User user = new pack.a.User();
}
}
같은 패키지에 있으면 경로를 생략해도 된다. 다른 패키지에 있을 경우 전체 경로를 적어주어야 한다.
패키지 import
이전 코드를 보면 다른 패키지를 가져다 쓸 때 전체 경로를 쓰는 부분이 있는데, 약간 불편하다.
이 코드를 수정해보자 .
package pack;
import pack.a.User;
public class PakageMain2 {
public static void main(String[] args) {
Data data = new Data();
User user = new User();
}
}
=> 다른 사용하고자 하는 패키지를 import 해주면 경로를 적지 않더라도 사용할 수 있다.
* 특정 패키지에 포함된 모든 클래스를 import 하고 싶으면 import pack.a.* 이런식으로 사용할 수 있다.
클래스 이름 중복
패키지 덕분에 클래스 이름이 같아도 패키지 이름으로 구분해서 같은 이름의 클래스를 사용할 수 있다.
만약 이름이 같은 두 개의 클래스를 모두 import해서 쓰고 싶으면 어떻게 할까?
package pack;
import pack.a.User;
public class PakageMain3 {
public static void main(String[] args) {
Data data = new Data();
User userA = new User();
pack.b.User userB = new pack.b.User();
}
}
=> 이 경우 하나의 패키지를 import 했다면 다른 패키지는 경로를 적어줘야 한다.
패키지 규칙
- 패키지의 이름과 위치는 폴더(디렉터리) 위치와 같아야 한다.
- 패키지의 이름은 모두 소문자를 사용한다.(관례)
- 패키지 이름의 앞부분에는 일반적으로 회사의 도메인 이름을 거꾸로 사용한다.
* 인프런 '김영한의 실전 자바 - 기본편'을 참고하여 작성하였습니다.