본문 바로가기

Study/Java

[Java] 패키지와 import

Package와 Import

패키지

관련된 클래스들을 관리하기 위해 묶어 놓은 것이다. 클래스의 이름이 같아도 다른 패키지에 속하면 패키지 명으로 구분이 가능하므로 충돌을 피할 수 있다. 클래스가 하나의 ".class" 파일인 것과 같이 패키지는 하나의 물리적인 디렉토리이다. 소스 파일의 첫 번째 줄에 선언되어야 하며 모든 클래스는 하나의 패키지에 속해야 한다.

  • 클래스와의 혼동을 막기 위해 패키지는 소문자로 이름을 짓는 것이 일반적이다.
  • 패키지도 다른 패키지를 포함하는 게 가능하며  "."으로 구분된다.
  • 소스파일 작성 시 패키지 선언을 하지 않을 경우 자동으로 unamed package에 속하게 된다.
패키지를 생성한 뒤에는 패키지 루트 디렉토리를 클래스 패스에 포함시키는 것을 잊지 말자!

import 문

클래스 사용 시, 패키지 명을 생략할 수 있도록 해준다.

  • 일일이 패키지 명을 입력하지 않아도 된다!
import 패키지명.클래스명; 
OR
import 패키지명.*; // 패키지에 속한 모든 클래스를 전부 가져 온다는 뜻이다.

java.lang 패키지의 클래스들이 패키지명 없이 사용할 수 있었던 이유는, 암묵적으로 import 문이 선언되기 때문이다. 자주 쓰이는 중요한 클래스들이 속한 패키지이기 때문에 import문으로 불러오지 않아도 사용이 가능한 것이다.

static import 

static import를 사용하게 되면 해당 클래스의 static 멤버를 호출할 때, 클래스 이름을 생략할 수 있다. 자바에서 종종 써왔던 Math 클래스를 예로 들어보자.

import static java.lang.Math.*;
class Main {
	public static void main(String[] args) {
		System.out.println(random());
	}
}

Math.random()으로 작성해왔지만, static import문을 사용하였기 때문에 Math클래스의 static 멤버들을 호출할 때 클래스 이름인 "Math"를 생략할 수 있다.

'Study > Java' 카테고리의 다른 글

[Java] 다형성  (0) 2020.03.13
[Java] 자바의 제어자  (0) 2020.03.12
[Java] 오버라이딩  (0) 2020.03.12
[Java] 자바의 상속  (0) 2020.03.12