<Java> 패키지

라모스·2021년 8월 30일
0

Java☕

목록 보기
7/14
post-thumbnail

" 자바의 패키지에 대해 학습하세요. "

학습할 것

  • package 키워드
  • import 키워드
  • 클래스패스
  • CLASSPATH 환경변수
  • -classpath 옵션
  • 접근지시자

1. package 키워드

패키지는 서로 관련된 클래스와 인터페이스의 컴파일 된 클래스 파일들을 하나의 디렉터리에 묶어 놓은 것이다.

그림과 같이 서로 다른 패키지에 있다면 같은 이름의 클래스를 사용하는 것이 가능하다.

특징)

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

패키지 선언은 다음과 같이 하며 반드시 주석과 공백을 제외한 첫 줄에 선언해야 함.

// package 패키지명;
package UI; // Tools 클래스를 컴파일하여 UI 패키지에 저장할 것을 지시.
public class Tools { ... } // 이 클래스의 경로명은 UI.Tools가 된다.

자바에서 java.lang은 자주 사용되는 패키지이지만 import 하여 사용하지 않는다. 이 패키지는 아주 기본적인 것들이기 때문에 import로 불러오지 않아도 자바에서 자동으로 java.lang 클래스를 불러온다.

다음 그림은 Java가 제공하는 Built-in package이다. 사용자 정의 패키지와 달리 개발자들이 사용할 수 있도록 기본적으로 제공하는 패키지이다.

패키지 이름 규정은 다음과 같다.

패키지 시작 이름내용
java자바 기본 패키지(Java vendor 개발)
javax자바 확장 패키지(Java vendor 개발)
org일반적으로 비영리단체(오픈소스)패키지
com일반적으로 영리단체(회사)패키지

2. import 키워드

다른 패키지에 속하는 클래스를 사용하기 위해 import 키워드를 사용한다.
사용 방법은 다음과 같다.

  • 소스의 시작 부분에 사용하려는 패키지 명시. 소스에는 클래스 명만 명시하면 됨.
  • 특정 클래스의 경로명만 포함
    import java.util.Scanner;
  • 패키지 내의 모든 클래스 포함
    import java.util.*;

// *는 현재 패키지 내의 클래스만을 의미하며 하위 패키지의 클래스까지 포함하지 않는다.

import java.util.Scanner;
public class ImportExample {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
    }
}

static import

static import는 일반적인 import와 다르게 메소드나 변수를 패키지, 클래스명 없이 접근 가능하게 해준다. JUnit 프레임워크로 테스트 코드를 작성하다 보면 이를 확인할 수 있다.

@Test
public void nonStaticImport() {
    Assert.assertThat(1, CoreMatchers.is(1));
}

@Test
public void staticImport() {
    assertThat(1, is(1));
}

3. 클래스패스

클래스를 찾기 위한 경로로, JVM이 프로그램을 실행할 때 클래스 파일을 찾는데 기준이 되는 파일 경로이다.

소스코드(.java 파일)를 컴파일하면 바이트 코드로 변환되는데, java runtime(java 또는 jre)으로 이 .class 파일에 포함된 명령을 실행하려면, 이 파일을 찾을 수 있어야 한다. .class 파일을 찾을 때, classpath에 지정된 경로를 사용한다.

classpath는 .class 파일이 포함된 디렉토리와 파일을 콜론(;)으로 구분한 목록이다.

이 classpath를 지정하기 위한 두 가지 방법은 다음과 같다.

  • CLASSPATH 환경변수 사용
  • java runtime에 -classpath 옵션 사용

4. CLASSPATH 환경변수

컴퓨터 시스템 변수 설정을 통해 지정할 수 있다.
JVM이 시작될 때 JVM의 클래스 로더는 이 환경변수를 호출하게 되고, 환경 변수에 설정되어 있는 디렉토리가 호출되면 그 디렉토리에 있는 클래스들을 먼저 JVM에 로드한다. 그러므로 CLASSPATH 환경 변수에는 필수 클래스들이 위치한 디렉토리를 등록하도록 한다.

5. -classpath 옵션

컴파일러가 컴파일 하기 위해 필요로 하는 클래스 파일들을 찾기 위해서 컴팡리시 파일 경로를 지정해주는 옵션이다. Hello.java 파일이 C:\Java 디렉터리에 존재하고, 필요한 클래스 파일들이 C:\Java\abc 에 위치한다면, javac -classpath C:\Java\abc C:\Java\Hello.java 로 해주면 된다. 만약 참조할 클래스 파일들이 그 외의 다른 디렉토리, 그리고 현 디렉토리에도 존재한다면, javac -classpath .;C:\Java\abc;C;\Java\def C:\Java\Hello.java 와 같이 ';' 으로 구분해줄 수 있다.(. : 현 디렉토리, .. : 상위 디렉토리)

6. 접근지시자

이전 포스팅 참고
<Java> 상속

References

  • Java의 정석 3판
  • 명품 JAVA Programming
profile
Step by step goes a long way.

0개의 댓글