본문으로 바로가기

[Java] 패키지와 import문

category Backend/객체 지향 프로그래밍 2022. 4. 13. 15:13

1. 패키지

  • 자바에서는 클래스를 체계적으로 관리하기 위해 패키지를 사용합니다.
  • 패키지의 물리적인 형태는 파일 시스템의 폴더
  • 패키지는 단순히 파일 시스템의 폴더 기능만 하는 것이 아니라 클래스의 일부분
  • 클래스만 따로 복사해서 다른 곳으로 이동하면 클래스는 사용할 수 없습니다.
  • 클래스를 이동할 경우에는 패키지 전체를 이동시켜야 합니다.

 

패키지의 역할

  • 패키지는 클래스를 유일하게 만들어주는 식별자 역할
  • 클래스 이름이 동일하더라도 패키지가 다르면 다른 클래스로 인식합니다
  • 클래스의 전체 이름 = "패키지명+클래스명"
  • 상위패키지.하위패키지.클래스

 

2. 패키지 선언

package 상위패키지.하위패키지;
  • 패키지는 클래스를 컴파일하는 과정에서 자동적으로 생성되는 폴더
  • 클래스명은 모두 소문자로 작성하는 것이 관례
  • 여러 팀이나 여러 회사가 참여하는 프로젝트의 경우 패키지 이름의 중복을 피하기 위하여 팀 이름 혹은 회사의 이름으로 패키지를 생성합니다.

 

 

예시

A 클래스가 com.veneas에 속해 있다면

A 클래스의 전체 이름 → com.veneas.A 

실제 파일 시스템 → com\veneas\A.class

package com.veneas.A

public class A {

}

 

3. import 문

같은 패키지에 속하는 클래스들은 아무런 조건 없이 다른 클래스를 사용할 수 있지만

다른 패키지에 속하는 클래스를 사용하려면 특별한 방법을 사용해야 합니다.

 

방법

1) 패키지와 클래스를 모두 기술

package com.one;

public class A {
    
}
package com.one;

public class B {

}
public class Main {
    public static void main(String[] args) {
        // 패키지와 클래스 기술
        com.one.A a = new com.one.A();
        com.one.B b = new com.one.B();
    }
}

 

2) import 문 사용

// import 문 사용
import com.one.A;
import com.one.B;

// * 
import com.one.*;

public class Main {
    public static void main(String[] args) {
        A a = new A();
        B b = new B();
    }
}

 

 

import 문

  • "*"는 패키지에 속하는 모든 클래스들을 의미합니다.
  • import문의 개수는 제한이 없습니다.
  • 서로 다른 패키지에 동일한 클래스 이름이 존재하고, 두 패키지가 모두 import 되어 있을 경우 패키지와 클래스를 모두 기술하여 사용해야 합니다.

 

주의할 점은 import문으로 지정된 패키지의 하위 패키지는 import 대상이 아닙니다.

package com.one;

public class A {

}
package com.one;

public class B {

}
package com.one.two;

public class C {
}
// *
import com.one.*;

// 하위 패키지는 따로 import 해줘야 함
import com.one.two.*;

public class Main {
    public static void main(String[] args) {
        A a = new A();
        B b = new B();
        C c = new C();
    }
}