[JAVA] 패키지와 import

min 🎸·2025년 1월 23일

🤔 패키지란 ?

패키지란 서로 관련 있는 클래스 또는 인터페이스 등을 모아 하나의 묶음(그룹)으로 단위를 구성하는 것을 말한다.

  • 같은 패키지 내에서는 동일한 이름의 클래스를 만들 수 없지만, 패키지가 다르면 동일한 이름을 가진 클래스를 만들 수도 있다.
  • 클래스명은 원래 패키지명을 포함하고 있다.
  • 지금까지 클래스 명에 패키지 명을 함께 사용하지 않은 이유는 동일한 패키지 내에서 사용했기 때문이다.
    그렇기 때문에 서로 다른 패키지에 존재하는 클래스를 사용하는 경우에는 클래스명 앞에 패키지명을 명시해서 풀 클래스 이름으로 사용해야 한다.

💡 패키지의 선언

package 패키지명;
  • 클래스나 인터페이스의 소스파일(.java)의 최상단에 선언되어야 한다.
  • 클래스 명명규칙과 다르게 소문자로만 작성하는 것을 원칙으로 한다.
  • 패키지 명을 지정하지 않으면 자동적으로 이름 없는 패키지에 속하게 된다.

package pack;

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

pack.a.User 와 같이 항상 전체 경로를 적어주는 것은 불편하기 떄문에
import를 사용할 수 있다.

🤔 import란?

서로 다른 패키지에 존재하는 클래스를 사용하는 경우 패키지명을 포함한 풀 클래스 이름을 사용해야 한다.
하지만 매번 다른 클래스의 패키지명까지 기술하기에는 번거롭다.
그래서 패키지명을 생략하고 사용할 수 있도록 한 구문이 import 구문이다.

💡 임포트 선언

package 패키지명;

import 패키지명.*;
import 패키지명.클래스명;
import static 패키지명.클래스명;

...클래스
  • import 문은 여러 개 명시할 수 있다.
  • import 는 package 선언문과 class 선언문 사이에 작성하며 어떠한 패키지 내에 있는 클래스를 사용할 것인지에 대해 미리 선언하는 효과를 가진다.
  • import 문은 소스파일(.java) 에서 package 문과 클래스 선언문 사이에 명시한다.
  • static import 문은 static 메소드를 호출할 때 사용한다.
package pack;

import pack.a.User;

public class PackageMain2 {
    public static void main(String[] args) {
        Data data = new Data();
        User user = new User();  //import 사용으로 패키지 명 생략 가능
    }
}

💡 패키지 * (별)

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

import pack.a.User; 이렇게 적었던 걸
import pack.a.*; 이렇게 줄일 수 있다.

pack.a 패키지에 있는 모든 클래스를 패키지 명을 생략하고 사용할 수 있다.

0개의 댓글