Java 패키지(package)

yesjuhee·2024년 10월 24일

Java 공부

목록 보기
10/17

남궁성님의 Java의 정석 3판 "Chapter 07 객체지향 프로그래밍 2"을 읽고 저의 방식대로 정리 한 글입니다.

패키지란, 클래스의 묶음이다. 패키지에는 클래스 또는 인터페이스를 포함시킬 수 있으며, 서로 관련된 클래스들끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다.

지금까지는 단순히 클래스 이름으로만 클래스를 구분 했지만, 사실 클래스의 풀네임은 패키지명을 포함한 것이다. 예를 들면 String 클래스의 실제 이름은 java.lang.String이다. java.lang 패키지에 속한 String 클래스라는 의미이다. 그래서 같은 이름의 클래스일지라도 서로 다른 패키지에 속하면 패키지명으로 구분이 가능하다.

클래스가 물리적으로 하나의 클래스파일(.class)인 것과 같이 패키지는 물리적으로 하나의 디렉토리이다. 디렉토리가 하위 디렉토리를 가질 수 있는 것처럼, 패키지도 다른 패키지를 포함할 수 있으며 온점으로 구분한다.

  • 하나의 소스파일에는 첫 번째 문장으로 단 한 번의 패키지 선언만을 허용한다.
  • 모든 클래스는 반드시 하나의 패키지에 속해야 한다.
  • 패키지는 온점을 구분자로 하여 계층구조로 구성할 수 있다.
  • 패키지는 물리적으로 클래스 파일(.class)을 포함하는 하나의 디렉토리이다.

책에서는 패키지를 포함한 컴파일, 클래스패스 등을 소개하고 있다. 책은 윈도우 기반 설명이기도 하고 Intellij를 이용해 컴파일할 때는 이러한 사용을 고려할 필요 없이 내장되어있는 것으로 보인다. 책의 내용은 따로 정리하지 말고 Intellij에 대해 좀 더 공부를 해보자.

import문

클래스의 코드를 작성하기 전에 import문으로 사용하고자 하는 클래스의 패키지를 미리 명시해주면 소스코드에 사용되는 클래스이름에서 패키지명은 생략할 수 있다. 패키지명.* 을 이용해서 지정된 패키지에 속하는 모든 클래스를 패키지명 없이 사용할 수도 있다. 다만 클래스의 이름 대신 *을 사용하는 것이 하위 패키지의 클래스까지 포함하는 것은 아니다.

static import문을 사용하면 static 멤버를 호출할 때 클래스 이름을 생략할 수 있다.

import static java.lang.System.out;
import static java.lang.Math.*;

class StaticImportEx1 {
	public static void main(String[] args) {
		// System.out.println(Math.random());
		out.println(random());
		
		// System.out.println("Math.PI: " + Math.PI);
		out.println("Math.PI: " + PI);
	}
}
profile
https://yesjuhee.tistory.com/

0개의 댓글