기록하자..
패키지 | 백기선님 LIVE-STUDY 본문
패키지
학습할 것
- package 키워드
- import 키워드
- 클래스패스
- CLASSPATH 환경변수
- -classpath 옵션
- 접근지시자
package 키워드
패키지는 클래스와 인터페이스를 묶는 단위이다.
패키지는 서로 관련된 클래스들끼리 그룹 단위로 묶어 사용함으로써 클래스를 효율적으로 관리할 수 있게 한다.
또한 접근을 제어하고, 연관된 타입을 묶는 역할로도 사용할 수 있다.
패키지는 클래스의 일부분이라 할 수 있다. 패키지는 클래스를 유일하게 식별하게 만들어주는 식별자 역할을 한다.클래스 이름이 동일하더라도 패키지가 다르면 다른 클래스로 인식한다. 클래스의 전체 이름은 "패키지명 + 클래스명"인데 패키지가 상.하위로 구분되어 있다면 도트(.)를 사용해서 다음과 같이 표현한다.
상위패키지.하위패키지.클래스모든 클래스에는 정의된 클래스 이름과 패키지 이름이 있다. 이 둘을 합쳐야 완전하게 클래스를 표현할 수 있다.
이를 FQCN(Fully Qualified Class Name)이라 한다.
패키지 선언
패키지를 선언하는 방법은 다음과 같다.
package 상위패키지.하위패키지
패키지의 이름은 개발자의 마음대로 지어도 되지만, 지켜야할 규칙이 있다.
- 패키지 이름은 클래스, 인터페이스와 겹치지 않도록 모두 소문자로 작성한다.
- 숫자로 시작하면 안되고, _, $를 제외한 특수문자를 사용해서는 안된다.
- java로 시작하는 패키지는 자바 표준 API에서만 사용하므로 사용해서는 안된다.
빌트-인 패키지 (Built-in package)
빌트인 패키지는 자바의 API에 포함되는 다수의 클래스를 포함하는 패키지이다.java.lang, java.util 패키지가 대표적이라고 할 수 있다.
자바에서 java.lang같은 패키지의 경우 기본적인 것들이라 따로 import 하지 않아도 자바가 자동으로 import 해준다. 그렇기에 우리가 java.lang.String과 같은 클래스를 따로 import하지 않고 사용할 수 있다.
빌트인 패키지의 예시는 다음과 같다.
- java.lang : language suppoart 클래스들을 포함사는 패키지
- 프리미티브 타입이나 수학 연산의 정의가 되는 클래스들
- 자동으로 import되기 때문에 해당 패키지의 클래스를 바로 사용할 수 있다.
- java.io : 입출력 기능을 지원하는 클래스들을 포함하는 패키지
- java.util : 자료구조 구현을 위한 유틸리티 클래스를 포함하는 패키지
- java.applet : Applets을 생성하기 위한 클래스들을 포함하는 패키지
- java.awt : GUI 컴포넌트를 구현하기 위한 클래스들을 포함하는 패키지
- java.net : 네트워킹 기능을 지원하기 위한 클래스를 포함하는 패키지
import 키워드
import키워드는 다른 패키지에 있는 클래스를 불러오기 위해 사용하는 키워드이다.

post패키지에 있는 Post클래스를 사용하기 위해 member 패키지에서 import를 사용해 Post클래스를 불러왔다.
두 클래스가 동일한 패키지에 있는 경우는 import할 필요가 없지만, 다른 패키지에 있는 클래스를 사용하기 위해서는 import를 사용해야 한다.
클래스패스
클래스패스는 컴파일러나 JVM이 클래스의 위치를 찾을 때 사용하는 경로이다.
JVM이 프로그램을 실행할 때, 클래스 파일을 찾는 과정에서 기준이 되는 파일 경로를 말한다. JVM이 .java 파일을 컴파일한 바이트코드(.class 파일)에 포함된 명령을 실행하기 위해서 이 .class파일을 찾아야 하는데, .class 파일을 찾을 때, classpath에 지정된 경로를 사용한다.
이 classpath를 지정하는 방법은 두 가지가 있다.
- CLASSPATH 환경변수 사용
- Java Runtime에 -classpath 옵션을 사용
CLASSPATH 환경변수
환경변수
- 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는, 동적인 값들의 모임
- 운영체제에서 자식 프로세스들을 생성할 때 참조하는 변수
환경변수의 사용 이유
- JDK를 설치하는 경로는 사용자마다 다를텐데, java를 실행하기 위해서는 설치된 경로까지 이동해서 javac 명령을 실행해야한다.
- 하지만 자바가 설치되어 있는 경로를 시스템 변수로 설정하면 해당 디렉토리까지 이동하지 않고 컴파일이 가능하다.
-classpath 옵션
.class 파일을 실행할 때 사용할 클래스파일의 위치를 JVM에게 알려주는 역할을 한다.

다음과 같이 Hello.class 파일이 있다고 하고 java Hello를 통해 실행시켜보면 실행이 잘되는 것을 확인할 수 있다.
그런데, .class파일을 Dir 폴더를 만든 뒤 똑같이 java Hello를 통해 실행시키면
Error: Could not find or load main class Hello
Caused by: java.lang.ClassNotFoundException: Hello위와 같이 클래스를 찾을 수 없다는 에러가 나온다.
이때 사용하는 것이 -classpath 옵션이다.
java -classpath ".:Dir" Hello위 명령어를 통해 다시 실행시켜보면 출력이 잘 되는 것을 확인할 수 있었다.
-classpath 뒤에 파일의 절대 경로를 입력해주면 된다.
;(:)(윈도우에서는 ;, 맥이나 리눅스의 경우 :)를 사용해 경로와 경로를 구분해준다.
접근지시자
접근 지시자는 클래스, 메서드, 인스턴스, 클래스 변수를 선언할 때 사용한다. 이를 통해 다른 곳에서 접근을 허용할지 말지를 결정할 수 있다.
- public
- 누구나 접근할 수 있다.
- protected
- 같은 패키지에 있거나, 상속받는 경우 접근할 수 있다.
- package-private (default)
- 접근지시자를 지정해주지 않았을 때 default 값으로 같은 패키지 내에서 사용가능하다.
- private
- 해당 클래스 내에서만 접근이 가능하다.
참고자료
'자바' 카테고리의 다른 글
| 예외처리 | 백기선님 LIVE-STUDY (0) | 2022.05.31 |
|---|---|
| 인터페이스 | 백기선님 LIVE-STUDY (0) | 2022.05.31 |
| 상속 | 백기선님 LIVE-STUDY (0) | 2022.05.02 |
| 클래스 | 백기선님 LIVE-STUDY (0) | 2022.05.02 |
| 제어문 | 백기선님 LIVE-STUDY (0) | 2022.05.02 |