1 minute read

목표

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

학습할 것 (필수)

package 키워드

package: 비슷한 성격의 자바 클래스들을 모아 놓은 디렉토리

  • 소스파일 첫번째 문장에 사용해야 하며, 단 한번만 선언해야 함
  • 첫번째 식별자가 java인 패키지 이름은 사용 불가(JDK 라이브러리 만드는 프로그래머가 사용하기로 약속)
  • 웹사이트의 도메인을 사용하기도 함(고유한 값)
  • 다른 패키지에 동일한 클래스명 사용 가능
  • 클래스명과 쉽게 구분하기 위해 소문자를 사용해야 함
package 패키지명;
package java.lang; // System 클래스의 패키지
package io.github.ysmiler; // 내가 만든 패키지

import 키워드

import: 다른 패키지에 존재하는 클래스를 사용하기 위한 키워드

import는 컴파일러에 소스파일에서 사용된 클래스의 패키지에 대한 정보를 제공한다.

import 패키지명.클래스명;
import 패키지명.*;
import java.lang.System; // 특정 클래스 지정
import java.lang.*; // java.lang 패키지에 포함된 모든 클래스 지정

java.lang 패키지는 자동으로 import 되기 때문에 별도로 import 해주지 않아도 사용이 가능하다.

  • static import
    static 멤버를 호출할 때 클래스 이름을 생략할 수 있다.

      // static import를 사용하지 않은 예
      import java.lang.Math; // java.lang 패키지는 생략 가능
    
      public class StaticImportSample {
          public static void main(String[] args) {
              System.out.println("PI: " + Math.PI);
              System.out.println("round: " + Math.round(1024.123));
          }
      }
    
      // static import를 사용한 예
      import static java.lang.Math.PI;
      import static java.lang.Math.*;
    
      public class StaticImportSample {
          public static void main(String[] args) {
              System.out.println("PI: " + PI);
              System.out.println("round: " + round(1024.123));
          }
      }
    

클래스패스

클래스패스: 클래스를 찾기 위한 경로
JVM이 프로그램을 실행할 때, 클래스 파일을 찾는데 기준이 되는 파일 경로를 말한다. 클래스패스를 지정하지 않으면 JVM은 필요한 클래스를 현재 디렉토리에서 찾는다. 클래스 패스를 지정하는 방법은 환경변수(CLASSPATH)를 사용하는 방법과, java runtime에 -classpath를 사용하는 방법이 있다.

CLASSPATH 환경변수

설정하는 방법은 윈도우 기준으로 내 PC 우클릭 > 속성 > 고급 시스템 설정 > 고급 탭 환경 변수(N) > 새로 만들기(W)로 JAVA_HOME과 CLASSPATH를 추가한다.

JAVA_HOME=C:\Program Files\java\jdk1.8.0_261
CLASSPATH=.;%JAVA_HOME%\lib;

-classpath 옵션

javac, java 에 -classpath, -cp 옵션을 줄 수 있다.

java -classpath ".;%JAVA_HOME%\lib;" 클래스명
java -cp ".;%JAVA_HOME%\lib;" 클래스명

접근지시자

  • public: 모든 접근 허용, 어떤 클래스가 접근을 하든 모두 허용 됨
  • protected: 상속 받은 클래스 또는 같은 패키지에서만 접근 가능
  • default: 자신 클래스 내부와 같은 패키지 내에서만 접근 가능
  • private: 외부 접근 불가능, 같은 클래스 내에서만 접근 가능

    한정자 클래스 내부 동일 패키지 하위 클래스 그 외
    public O O O O
    protected O O O X
    default O O X X
    private O X X X

참고 서적

뇌를 자극하는 Java 프로그래밍
알기 쉽게 해설한 Java
열혈강의 객체 중심 Java


live-study with whiteship