✏️ Info.
- Java 패키지 학습
📋 List.
1. package 키워드
2. import 키워드
3. 클래스 패스
4. CLASSPATH 환경변수
5. -classpath 옵션
6. 접근 지시자
✔️ Content.
1. package 키워드
* 패키지란 서로 관련 있는 클래스 또는 인터페이스들을 묶어 놓은 묶음이다.
- 물리적으로 하나의 디렉터리를 의미한다.
- 하나의 패키지에 속한 클래스나 인터페이스 파일은 모두 해당 패키지 이름의 디렉터리에 포함되어 있다.
- 다른 패키지를 포함할 수 있으며, 디렉터리 계층 구조는 점(.)으로 구분된다.
- 규칙
- 숫자로 시작해서는 안된다.
- _, $를 제외한 특수문자 사용 금지
- java로 시작하는 패키지는 자바 표준 API에서만 사용하므로 사용해서는 안된다.
- 소문자로 작성하는 것이 관례
- 도메인 이름이 있을 경우 패키지 이름은 도메인 역순으로 지어준다
- (도메인) wony.com -> (패키지) com.wony
ex)
package me.studypackage;
FQCN(Fully Qualitied Class Name)
- 모든 클래스에는 정의된 클래스 이름과 패키지 이름이 있다.
- FQCN : 패키지 이름 + 클래스 이름
- ex) String Class
- 패키지 이름( java.lang ) + 클래스 이름( String ) = FQCN ( java.lang.String )
Built-in Package
- Java Development Enviroment에 포함된 미리 작성된 라이브러리(패키지, 클래스)이다.
- 많이 쓰는 패키지로 java.lang, java.util 등이 있다.
- 그 외 참고 - docs.oracle.com/javase/8/docs/api/
2. import 키워드
* import : 다른 패키지에 있는 클래스를 참조하기 위해서는 import 구문을 사용해야 한다.
- java.lang 패키지는 import 구문이 필요 없다.
ex) Junit Import
import org.junit.jupiter.api.Test;
3. 클래스 패스
*JVM 혹은 Java 컴파일러가 클래스나 패키지를 찾을 때 기준이 되는 파일 경로
- 기본적으로 java 명령을 실행하는 위치
- 미지정 시 기본적으로 현재 디렉터리가 클래스 패스 가된다.
- 세미콜론(;)을 구분자로 하여 여러 개 경로를 지정할 수 있다.
- 파일 및 디렉터리를 지정할 수 있다.
- jar, zip 확장자 지정 가능
4. CLASSPATH 환경변수
* 앞서 설명한 클래스 패스를 환경변수로 지정할 수 있다.
- 환경변수로 한번 지정할 경우 후에 나올 -classpath 옵션을 java를 실행할 때마다 사용하지 않아도 된다.
- Window 기준으로 시스템 환경 변수 설정 시 JAVA_HOME(Java가 설치된 경로) 아래 lib을 CLASSPATH로 지정하였다.
5. -classpath 옵션
*자바를 실행할 때 사용할 클래스들의 위치를 JVM에게 알려준다.
- -classpath 대신 단축어 -cp를 사용해도 된다.
ex) 현재 디렉터리에서 하위 디렉토리 wony에 있는 wony.class파일 열기
java -classpath .:wony wony
6. 접근 지시자
- 접근 허용 표
접근 제어자 | 같은 클래스 | 같은 패키지 | 자손 클래스 | 전체 |
public | O | O | O | O |
protected | O | O | O | X |
default | O | O | X | X |
private | O | X | X | X |
- 접근 대상 표
접근 제어자 | 클래스 | 필드 | 생성자 | 메소드 |
public | O | O | O | O |
protected | X | O | O | O |
default | O | O | O | O |
private | X | O | O | O |
❗️ Refer.
- package 키워드
https://programmers.co.kr/learn/courses/5/lessons/172
https://www.notion.so/ed8e346f88f54849a06ff968b1877ca5
- 클래스 패스
https://pej4303.tistory.com/57
'Live-Study' 카테고리의 다른 글
[9주차] 예외 처리 (0) | 2021.02.19 |
---|---|
[8주차] 인터페이스 (0) | 2021.02.19 |
[6주차] 상속 (0) | 2021.02.19 |
[5주차] 클래스 (0) | 2021.01.04 |
[4주차] 제어문 (0) | 2020.12.31 |