7주차 과제: 패키지 


목표

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

학습할 것 (필수)

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

마감일시

2021년 1월 2일 토요일 오후 1시까지.


package 키워드

  • package이름은 보통 도메인 이름을 거꾸로 적은 후, 그 뒤에 프로젝트 이름을 붙여서 만듭니다.  분류를 자세히 하려면 프로젝트 이름 뒤에 또 다른 이름을 사용할 수도 있습니다.
  • package이름은 폴더명 점 폴더명 점 폴더명 과 같은 형식으로 만들어지며, 각각의 폴더명은 숫자로 시작할 수 없습니다.
  • 도메인 이름이 live.com 이고 프로젝트 이름이 study 라면 com.live.study.Hello 로 패키지를 지정 할 수 있습니다. 
  • 이 때 도메인으로 사용하는 이유는 패키지 중복을 막기위해 사용하는 일반적인 방법 이므로 꼭 존재하는 도메인이 아니어도 됩니다.

import 키워드

각기 다른 패키지에 존재하는 같은 이름의 클래스 파일을 사용해야 한다면 아래와 같이 이용해야 합니다. 

    ex ) com.live.study.Hello hello = new com.live.study.Hello();     //이렇게 사용


import 를 사용하며 위해서 해당 패키지를 사용함을 명시해줌으로 
훨씬 간편하게 사용할 수 있습니다.
  • java.lang패키지를 제외하고는 다른 패키지에 있는 클래스를사용하려면 import라는 구문을 적어줘야 합니다
  • import com.live.study.Hello;
  • 위의 코드는 com.live.study패키지 아래의 Hello클래스를 사용하겠다는 것을 컴파일러와 JVM에게 알려줍니다.
  • 클래스 이름대신에 * 를 적는 경우 해당 패키지의 모든 클래스를 사용하겠다는 의미 입니다.
    ex) import com.live.study.*
          import java.util.*;

클래스패스

클래스패스란 클래스를 찾기위한 경로입니다. JVM이 프로그램을 실행할 때, 클래스파일을 찾는 데 기준이 되는 파일 경로를 말하는 것으로, 소스 코드(.java로 끝나는 파일)를 컴파일하면 소스 코드가 “바이트 코드”(바이너리 형태의 .class 파일)로 변환됩니다. 

java runtime(java 또는 jre)으로 이 .class 파일에 포함된 명령을 실행하려면, 먼저 이 파일을 찾을 수 있어야 합니다. 이때 .class 파일을 찾을 때 classpath에 지정된 경로를 사용합니다. classpath는 .class 파일이 포함된 디렉토리와 파일을 콜론으로 구분한 목록입니다. java runtime은 이 classpath에 지정된 경로를 모두 검색해서 특정 클래스에 대한 코드가 포함된 .class 파일을 찾습니다. 찾으려는 클래스 코드가 포함된 .class 파일을 찾으면 첫 번째로 찾은 파일을 사용합니다.

classpath를 지정할 수 있는 두 가지 방법이 있습니다. 하나는 환경 변수 CLASSPATH를 사용하는 방법이고, 또 하나는 java runtime에 -classpath 플래그를 사용하는 방법입니다.

환경변수 / -classpath 옵션 

CLASSPATH=.;C:\Program Files\Java\jdk-10.0.1\lib\tools.jar

Windows 10 및 Windows 8
  1. [검색]에서 시스템(제어판)을 검색하여 선택합니다.
  2. 고급 시스템 설정 링크를 누릅니다.
  3. 환경 변수를 누릅니다. 시스템 변수 섹션에서 PATH 환경 변수를 찾아 선택합니다. 편집을 누릅니다. PATH 환경 변수가 존재하지 않을 경우 새로 만들기를 누릅니다.
  4. 시스템 변수 편집(또는 새 시스템 변수) 창에서 PATH 환경 변수의 값을 지정합니다. 확인을 누릅니다. 확인을 눌러 나머지 창을 모두 닫습니다.
  5. 명령 프롬프트 창을 다시 열고 Java 코드를 실행합니다.

- 출처 : https://www.java.com/ko/download/help/path_ko.html

-classpath 

컴파일러가 컴파일 하기 위해서 필요로 하는 참조할 클래스 파일들을 찾기 위해서 컴파일시 파일 경로를 지정해주는 옵션

Hello.java파일이 C:\Java 디렉터리에 존재하고,필요한 클래스 파일들이 C:\Java\Livestudy에 위치한다면, 아래와 같이 사용합니다.

javac -classpath C:\Java\LivestudyC:\Java\Hello.java

만약 참조할 클래스 파일들이 그 외의 다른 디렉터리, 그리고 현 디렉토리에도 존재한다면

javac -classpath .;C:\Java\Livestudy;C;\Java\whiteShipC:\Java\Hello.java

위와 같이; 으로 구분해줍니다.

또한 classpath 대신 단축어인 cp를 사용하여 쓸 수 있습니다.

javac -cp .;C:\Java\Livestudy;C;\Java\whiteShipC:\Java\Hello.java


접근지시자


접근 지시자(접근 제한자)란 클래스 내에서 멤버의 접근을 제한하는 역할을 합니다. 

종류

  • public
    • 어떤 클래스든 접근할 수 있다는 것을 의미
  • protected
    • 자기 자신, 같은 패키지, 서로 다른 패키지다 하더라도 상속받은 자식 클래스에서는 접근할수 있다는 것을 의미
  • private
    • 자기 자신만 접근할 수 있다는 것을 의미
  • 접근제한자를 적지 않으면 default접근 지정자
    • 자기자신과 같은 패키지에서만 접근할 수 있다는 것을 의미

댓글

이 블로그의 인기 게시물

git-receive-pack not permitted on 깃 허브 로그인 관련 문제