패키지가 다르다고 pack.a.User
와 같이 항상 전체 경로를 적어주는 것은 불편하다. 이때는 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 사용으로 패키지 명 생략 가능
}
}
코드에서 첫줄에는 package
를 사용하고, 다음 줄에는 import
를 사용할 수 있다.
import
를 사용하면 다른 패키지에 있는 클래스를 가져와서 사용할 수 있다.
import
를 사용한 덕분에 코드에서는 패키지 명을 생략하고 클래스 이름만 적을 수 있다.
참고로 특정 패키지에 포함된 모든 클래스를 포함해서 사용하고 싶으면 import
시점에 *(별)
을 사용하면 된다.
package pack;
import pack.a.*; // pack.a의 모든 클래스 사용
public class PackageMain2 {
public static void main(String[] args) {
Data data = new Data();
User user = new User(); // import 사용으로 패키지 명 생략 가능
}
}
패키지 덕분에 클래스 이름이 같아도 패키지 이름으로 구분해서 같은 이름의 클래스를 사용할 수 있다.
pack.a.User
pack.b.User
이런 경우 클래스 이름이 둘 다 User
이지만 패키지 이름으로 대상을 구분할 수 있다.
이렇게 이름이 같은 경우 둘 다 사용하고 싶으면 어떻게 해야할까?
package pack.b;
public class User {
public User() {
System.out.println("패키지 pack.b 회원 생성");
}
}
package pack;
import pack.a.User;
public class PackageMain3 {
public static void main(String[] args) {
User userA = new User();
pack.b.User userB = new pack.b.User();
}
}
같은 이름의 클래스가 있다면 import
는 둘 중 하나만 선택할 수 있다. 이때는 자주 사용하는 클래스를 import
하고 나머지를 패키지를 포함한 전체 경로를 적어주면 된다.
물론 둘 다 전체 경로를 적어준다면 import
를 사용하지 않아도 된다.