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(); //이렇게 사용
- 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
- [검색]에서 시스템(제어판)을 검색하여 선택합니다.
- 고급 시스템 설정 링크를 누릅니다.
- 환경 변수를 누릅니다. 시스템 변수 섹션에서
PATH
환경 변수를 찾아 선택합니다. 편집을 누릅니다.PATH
환경 변수가 존재하지 않을 경우새로 만들기
를 누릅니다. - 시스템 변수 편집(또는 새 시스템 변수) 창에서
PATH
환경 변수의 값을 지정합니다. 확인을 누릅니다. 확인을 눌러 나머지 창을 모두 닫습니다. - 명령 프롬프트 창을 다시 열고 Java 코드를 실행합니다.
- 출처 : https://www.java.com/ko/download/help/path_ko.html
컴파일러가 컴파일 하기 위해서 필요로 하는 참조할 클래스 파일들을 찾기 위해서 컴파일시 파일 경로를 지정해주는 옵션
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접근 지정자
- 자기자신과 같은 패키지에서만 접근할 수 있다는 것을 의미
댓글
댓글 쓰기