Java/live-study

(JAVA)백기선 라이브 스터디 7주차 : 패키지

jay Joon 2021. 1. 1. 17:47

목표

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

학습할 것 (필수)

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

1. package  키워드

 

package의 구조는 다음 그림과 같다.

package 구조

이처럼 package 개념은 class 들을 모아놓은 폴더라고 말할 수 있다.

 

그럼 소스코드에서 package 키워드를 알아보자.

1. package 키워드란 현재 class가 위치하고 있는 구조의 위치를 나타낸다.

 

2. package 키워드는 항상 가장 첫 줄에 존재해야 한다.

 

 

즉 위의 그림처럼 BinaryTree 클래스는  live_study_05 -> option -> binaryTree라는 계층적 구조를 가지고 있다는 것을 명시해놓은 키워드라고 생각하면 된다.

BinaryTree 의 위치.


2. import 키워드

 

import 키워드는 다른 패키지에 있는 class에 접근하기 위해 사용한다.

 

이 말의 뜻은 같은 패키지에 있는 class에 접근할 때는 사용을 안 해도 된다는 뜻도 된다.

위와 같은 구조를 가짐
Solution 이 BinaryTree 클래스에 접근할때 import 가필요없음

import 키워드는 다음과 위 설명가 같고

 

 

그러면 import static 키워드는 뭘까? 

 

그럼 import static 은 뭘까? 

앞서 말한 것처럼 import 키워드는 다른 패키지에 있는 class를 접근한다고 했다.

 

하지만 import static 클래스는 다른 패키지에 있고 class 안에 있는 static(한 변수 , 메서드)를 직접적으로 접근하기 위해 사용한다.

 

Assertions 클래스를 import 하고

 

이런식으로 접근하여 쓴다.

하지만 import static 키워드를 사용하여 

import static 키워드사용

 

코드를 줄 일수 있다

다음과 같이 코드를 간략히 표현할 수 있다.

 

여기서 핵심은 다른 패키지에 있고 class 안에 있는 static(한 변수 , 메서드)만 사용이 가능하다는 것!! 


3. 클래스 패스(class path)

 

클래스 패스란? 

->  클래스패스란 Java 컴파일러가 실행시킬 클래스 파일의 검색 경로를 말한다

 

 

-classpath

-> 자바를 실행할 때 줄 수 있는(옵션) , 클래스의 위치를 지정하는 역할 

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 이 발생할 것이다.

 

이러한 구조에서
Hello.Class 파일을 test 디렉토리로 이동하고 실행하면?
ClassNotFoundException 이 발생 !

이러한 경우가 있을 때 -classpath 옵션을 주면 해결이 된다.

 

classpath 옵션을 주면 됩니다.

여기서. 의 의미는 현재 위치하고 있는 디렉터리를 가리킨다.

 

순서를 말하자면

현재 위치하고 있는 디렉터리를  먼저 탐색하고 실행시킬 수 없으면 test 디렉터리로 이동하여 실행시킬 수 있는

class를 찾게 된다.

 

 

CLASSPATH 환경변수

 

일단 환경 변수의 뜻은 다음과 같다.

환경변수(Environment variable)는 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값

 

우리가 JAVA를 설치하고 명령프롬프창에 바로 java , javac를 했을 때 

 

'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는  배치 파일이 아닙니다.'라는 문구를 만날 것이다.

 

하지만 환경변수에 path를 설정하여 다시 명령어를 실행하면 정상작동이 된다.

 

이처럼

 

우리가 자바를 실행할 때 마다 -classpath 를 주는 것은 비효율 적이기 때문에 classpath를 미리 시스템 환경 변수에 등록함으로써 좀더 간단히 자바애플리케이션을 실행 할 수 있다.

 


4. 접근 지시자

 

접근 지시자란?

-> 접근의 허용 범위를 제한하는 용도이다.

 

 

접근 지시자 표

 

 

public -> 어디서든 접근이 가능하다.

protected -> 상속받은 클래스 또는 같은 패키지에서만 접근이 가능하다.

 

아무런 접근 지시자를 선언하지 않음(no modifier)

->자신 클래스 내부와 같은 패키지 내에서만 접근이 가능하다.

 

private -> 오로지 같은 클래스 내에서만 접근이 가능하다.