목표
자바의 패키지에 대해 학습하세요.
학습할 것 (필수)
- package 키워드
- import 키워드
- 클래스 패스
- CLASSPATH 환경변수
- -classpath 옵션
- 접근 지시자
1. package 키워드
package의 구조는 다음 그림과 같다.
이처럼 package 개념은 class 들을 모아놓은 폴더라고 말할 수 있다.
그럼 소스코드에서 package 키워드를 알아보자.
1. package 키워드란 현재 class가 위치하고 있는 구조의 위치를 나타낸다.
2. package 키워드는 항상 가장 첫 줄에 존재해야 한다.
즉 위의 그림처럼 BinaryTree 클래스는 live_study_05 -> option -> binaryTree라는 계층적 구조를 가지고 있다는 것을 명시해놓은 키워드라고 생각하면 된다.
2. import 키워드
import 키워드는 다른 패키지에 있는 class에 접근하기 위해 사용한다.
이 말의 뜻은 같은 패키지에 있는 class에 접근할 때는 사용을 안 해도 된다는 뜻도 된다.
import 키워드는 다음과 위 설명가 같고
그러면 import static 키워드는 뭘까?
앞서 말한 것처럼 import 키워드는 다른 패키지에 있는 class를 접근한다고 했다.
하지만 import static 클래스는 다른 패키지에 있고 class 안에 있는 static(한 변수 , 메서드)를 직접적으로 접근하기 위해 사용한다.
하지만 import static 키워드를 사용하여
다음과 같이 코드를 간략히 표현할 수 있다.
여기서 핵심은 다른 패키지에 있고 class 안에 있는 static(한 변수 , 메서드)만 사용이 가능하다는 것!!
3. 클래스 패스(class path)
클래스 패스란?
-> 클래스패스란 Java 컴파일러가 실행시킬 클래스 파일의 검색 경로를 말한다
-classpath
-> 자바를 실행할 때 줄 수 있는(옵션) , 클래스의 위치를 지정하는 역할
위의 그림을 해석해보자면 자바를 실행할 때, 클래스의 위치를 지정하는 역할
또한 윈도는 구분자(;) 리눅스는 구분자 (:)를 이용하여 여러 개 의 검색경로를 가질 수 있다.
주로 실행시킬 애플리케이션이 각각의 디렉터리에 나뉘어 있을 때 사용한다.
ex)
public class Hello{
public void hi(){
System.out.println("안녕 하세요");
}
}
public class ClassPathExam {
public static void main(String[] args) {
Hello hello = new Hello();
hello.hi();
}
}
이러한 java 파일을 컴파일하면 같은 디렉터리에 class 파일이 생긴다.
하지만 이 두 개의 class 파일(Hello.class , ClassPathExam)을 의도적 분류하여 ClassPathExam 파일을 실행하면
ClassNotFoundException 이 발생할 것이다.
이러한 경우가 있을 때 -classpath 옵션을 주면 해결이 된다.
여기서. 의 의미는 현재 위치하고 있는 디렉터리를 가리킨다.
순서를 말하자면
현재 위치하고 있는 디렉터리를 먼저 탐색하고 실행시킬 수 없으면 test 디렉터리로 이동하여 실행시킬 수 있는
class를 찾게 된다.
CLASSPATH 환경변수
일단 환경 변수의 뜻은 다음과 같다.
환경변수(Environment variable)는 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값
우리가 JAVA를 설치하고 명령프롬프창에 바로 java , javac를 했을 때
'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다.'라는 문구를 만날 것이다.
하지만 환경변수에 path를 설정하여 다시 명령어를 실행하면 정상작동이 된다.
이처럼
우리가 자바를 실행할 때 마다 -classpath 를 주는 것은 비효율 적이기 때문에 classpath를 미리 시스템 환경 변수에 등록함으로써 좀더 간단히 자바애플리케이션을 실행 할 수 있다.
4. 접근 지시자
접근 지시자란?
-> 접근의 허용 범위를 제한하는 용도이다.
public -> 어디서든 접근이 가능하다.
protected -> 상속받은 클래스 또는 같은 패키지에서만 접근이 가능하다.
아무런 접근 지시자를 선언하지 않음(no modifier)
->자신 클래스 내부와 같은 패키지 내에서만 접근이 가능하다.
private -> 오로지 같은 클래스 내에서만 접근이 가능하다.
'Java > live-study' 카테고리의 다른 글
[Java] 백기선 라이브스터디 9주차 : 예외 처리 (0) | 2021.01.14 |
---|---|
[JAVA] 백기선 라이브스터디 8주차 과제: 인터페이스 (0) | 2021.01.06 |
[JAVA] 백기선 라이브 스터디 6주차 과제: 상속 (0) | 2020.12.26 |
[Java] 클래스(class) - 백기선 라이브 스터디 5주차 (0) | 2020.12.13 |
[JAVA] 백기선 자바 스터디 4주차 과제: 제어문 (0) | 2020.12.05 |