java week 7


목차

1. package 키워드

2. import 키워드

3. 클래스패스

4. CLASSPATH 환경변수

5. -classpath 옵션

6. 접근지시자


package


패키지란 비슷한 성격자바 클래스들을 모아 넣는 자바의 디렉토리이다.

그림1

퍼블릭 클래스가 물리적으로 하나의 파일인 것과 유사하게 패키지는 물리적으로 하나의 디렉토리이다.

예를들어 java.lang.example 이라는 클래스가 있다가 하자 example 클래스는 java패키지 밑에 lang 패키지 속에 example 클래스가 존재하며, 물리적으로는 java 디렉토리 밑에, lang 디렉토리 밑에 exmaple.class 파일이다.

하나의 프로젝트는 일반적으로 하나 이상의 패키지를 포함한다.

그림2

특정 패키지 안에도 하위 패키지를 생성할 수 있으며, 위 그림과 같이 프로젝트는 패키지의 모음이며, 패키지는 클래스 파일들의 묶음이다.


import


외부 패키지의 클래스를 불러 사용하고자 하는 경우 원래는 클래스명 앞에 패키지 이름을 붙여야한다. 하지만 매번 패키지명을 붙이는 것은 매우 비효율적이다.

import 문의 역할은 컴파일러에게 소스파일에 사용된 클래스의 패키지에 대한 정보를 제공하는 것이다. 컴파일 시에 컴파일러는 import문을 활용하여 소스파일데 사용된 클래스들의 패키지를 알아 낸다음, 모든 클래스 이름 앞에 패키지 명을 붙여준다.

import문은 package 문 다음에, 클래스 선언 문 이전에 위치해야한다. ,package 문과 달리 한 소스파일에 여러 번 선언할 수 있다.

  1. 일반적인 .java파일의 구성
    1. package 문
    2. import 문
    3. class 문
  2. import문을 선언하는 방법
    1. import package.class;

      class ex = new ex_class();

    2. import package.*;

      class a = new class1();

      class b = new class2();

  3. static import 문

    static멤버를 호출할 때 클래스 이름을 생략할 수 있다.

    ex) import static java.lang.Math.*

      Math.random();
         
      random();
    

같은 패키지 내의 클래스는 import를 사용하지 않아도 바로 사용가능하다. 또한 java.lang 패키지의 클래스도 import를 사용하지 않고 사용가능하다.


클래스패스


클래스를 찾기 위한 경로

JVM이 프로그램을 실행할 때, 클래스파일을 찾는다. 이때 기준이 되는 파일 경로를 말한다.

소스코드(.JAVA)를 컴파일하면 소스 코드가 “바이트 코드”로 변환한다. java runtime은 이 바이트코드를 실행하려면, 먼저 이 파일을 찾아야한다. 파일을 찾을때는 미리 설정해놓은 classpath 경로를 살펴보고 존재한다면 해당 파일을 실행하며, 파일이 없다면 현재 디렉토리를 살펴본다.

클래스 패스는 1. 환경변수를 통해 지정할 수 있으며, 2. java runtime의 -classpath 플래그를 통해서도 지정할 수 있다.


class_path_환경변수


  1. 시스템 환경 변수 편집 실행

  2. class path 새로만들기

    • 변수 이름 : CLASSPATH
    • 변수 값 : %JAVA_HOME%\lib

그림5


-classpath옵션


환경설정 방법은 한번 설정하면 편하게 사용하지만 pc를 바꾼다던지 포맷이 다시 설정해줘야한다. 그렇기에 -classpath 방법도 자주 사용한다.

java -classpath ".;lib" 클래스이름

. : 현재 디렉토리에서 찾아보라

; : 세미클론, 경로와 경로를 구분


접근지시자


그림6

private : 클래스 내부에서만 접근을 허용한다.

default : 클래스 내부와 동일 패키지에서만 접근을 허용한다.`(접근지시자를 선언하지 않을 시 default로 구현된다.)

protect : 클래스 내부와 상속받은 클래스에서만 접근 가능

public : 어디서든 접근 가능

그림7


출처


  1. package
    1. https://studymake.tistory.com/428
    2. https://wikidocs.net/231
  2. import
    1. https://milhouse93.tistory.com/54
    2. https://studymake.tistory.com/432
  3. 클래스패스
    1. https://effectivesquid.tistory.com/entry/%EC%9E%90%EB%B0%94-%ED%81%B4%EB%9E%98%EC%8A%A4%ED%8C%A8%EC%8A%A4classpath%EB%9E%80
  4. 환경변수
    1. https://blog.opid.kr/62
  5. -classpath
    1. https://wookcode.tistory.com/
  6. 접근 지시자
    1. https://hunit.tistory.com/162
    2. https://rwd337.tistory.com/25






© 2019.04. by salmon2

Powered by theorydb