목표

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

학습할 것 (필수)

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

package 키워드

  • 클래스들의 묶음.
  • 클래스가 물리적으로 하나의 .class 파일이라면 패키지는 하나의 디렉토리.

package 패키지명;

  • 선언 방법

    • 클래스 최상위에 패키지명을 적어준다.
  • 하나의 클래스 한번만 선언 할 수 있다.

  • 자바에서 기본적으로 unnamed package를 제공한다.

    • package를 선언하지않으면 자동으로 unnamed package가 된다.
    • 이렇게 생성된 클래스는 다른 package에 있는 자바 파일에서 import 할수 없다.
    • 같은 unnamed package에 있으면 import 가능.
  • 클래스 파일을 컴파일시 컴파일된 .class의 경로는 기본으로 지정한 경로에 컴파일러가 패키지의 계층구조에 맞게 디렉토리가 없으면 디렉토리를 생성하고 .class파일을 패키지 설정된 경로에 생성한다.

import 키워드

  • 다른 패키지의 클래스를 사용하려면 패키지명이 포함된 클래스 이름을 사용해야 한다.
  • 하지만 매번 패키지명을 적어서 쓰기엔 귀찮다.
  • 그래서 import 키워드를 사용하여 패키지명을 생략 시킬수 있다.

package 패키지명; import 패키지명.클래스명; 또는 import 패키지명.*; import 패키지명.클래스명 은 직접 그 클래스를 지정하는것이고 import 패키지명.*; 은 그 패키지의 모든 클래스를 포함하는것이다.

static import

  • import 키워드를 사용해 클래스의 패키지명을 생략 하듯이
  • static import 키워드를 사용해 static 멤버를 호출할때 클래스 이름을 생략할수 있다.

import static org.junit.Assert.assertThat; import static org.junit.Assert.*; assertThat(); assertEquals();

  • assertThat()은 import static으로 직접 선언했고
  • assertEquals는 import static으로 Assert 패키지 내의 모든 클래스를 선언했으므로 생략하고 사용할수 있다.

클래스패스

  • classpath 는 jdk tools 가 클래스를 찾을수 있게 기준이 되는 방법중 하나.

기본 방법 java -cp 경로 그외에 다른 방법들 windows 환경에서 사용방법 echo %CLASSPATH% linux 환경 echo $CLASSPATH

  • 이렇게 classpath를 등록 시켜놓으면 classpath에 설정된 경로를 생략할수 있다.

java -jar a.jar

  • classpath로 설정된 디렉토리 안에 a.jar파일이 있는 경우 classpath로 등록하면
  • 이런식으로 생략할수 있다.

CLASSPATH 환경변수

  • window 환경 , linux 환경 환경변수 설정은 클래스패스 항목에서 언급함

CLASSPATH 옵션

  • -cp 옵션은 클래스패스 항목에서 언급함.

추가로 -classpath 옵션도 -cp 옵션과 동일하게 작동한다.

접근지시자

  • 외부에서 멤버 또는 클래스에 접근할수 있는 권한을 정해주는것

  • private

    • 접근 불가
    • 같은 클래스에서만 접근할수 있음.
  • default

    • 같은 패키지내에서만 접근가능하다.
    • default 키워드는 생략 가능하다.
  • protected

    • 같은 패키지 내에서만 접근가능하다
    • 추가로 다른 패키지의 서브클래스에서 접근가능하다.
  • public

    • 어느곳에서나 접근가능하다.
  • private → default → protected → public

  • 우로 갈수록 접근범위가 넓어진다.

  • 생성자에도 접근지시자로 권한을 줘서 인스턴스 생성을 못하게 막을 수도 있다.

참고

https://docs.oracle.com/javase/specs/jls/se7/html/jls-7.html#jls-7.5

https://docs.oracle.com/javase/tutorial/essential/environment/paths.html

자바의정석

'백선생님 온라인스터디' 카테고리의 다른 글

9주차 - 예외 처리  (0) 2021.01.19
8주차 - 인터페이스  (0) 2021.01.16
6주차 상속  (0) 2021.01.10
4주차 - 제어문  (0) 2021.01.09
3주차 연산자  (0) 2021.01.07

+ Recent posts