보통사람

[Study-7주차] 패키지 본문

Study

[Study-7주차] 패키지

pej4303 2020. 12. 29. 13:36
  • 목표

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

  • 학습할 것 (필수)

    • package 키워드

    • import 키워드

    • 클래스 패스

    • CLASSPATH 환경변수

    • -classpath 옵션

    • 접근 지시자

 

1. package문

 

  • 클래스의 묶음 또는 물리적으로 하나의 디렉터리를 의미함

  • 서로 관련된 있는 것을 묶어놓음으로써 효율적으로 관리할 수 있으며 클래스 풀네임(FQCN)의 고유성을 보장하기 위해서 사용함

    • FQCN(Fully Qualified Class Name) : 클래스가 속한 패키지명까지 모두 포함한 이름을 의미(패키지명.클래스명)

  • 점(.)을 구분자로 하여 계층구조로 구성되어 있음

  • 모든 클래스는 반드시 하나의 패키지에 속해야 함

    • 패키지를 선언하지 않으면 자바에서 기본적으로 제공하는 이름 없는 패키지(unnamed package)로 속하게 됨

  • 규칙

    • 소문자를 원칙으로 함

    • 소스코드에서 주석과 공백을 제외한 첫 번째 줄에 딱 한번 선언되어야 함

  • 선언

package 패키지명;


package com.study.halle.week7;

 

2. import문

 

  • 다른 패키지에 있는 클래스를 사용해야 할 때 패키지명을 생략하기 위해서 사용함

  • 같은 패키지에 있는 클래스들은 import문을 선언하지 않아도 패키지명 생략 가능함

  • 컴파일러에게 소스코드에 사용된 클래스의 패키지에 대한 정보를 제공해주는 역할을 함

  • 컴파일시 컴파일러는 import문을 통해 알게 된 패키지를 모든 클래스명 앞에 붙여줌

  • 규칙

    • package문 다음, 클래스 선언 이전에 위치해야 함

  • 선언

import 패키지명.클래스명;
import 패키지명.*;                  // 해당 패키지에 속하는 모든 클래스를 사용하겠다는 의미


import com.study.halle.week6.Me;
import com.study.halle.week6.*;    // week6 패키지에 해당하는 모든 클래스를 사용하겠다는 의미
  • 모든 소스파일에는 묵시적으로 java.lang 패키지가 import 되어 있음

    • 6주 차에서 배운 상속을 생각해보면 Object가 모든 클래스의 최상위이기 때문에 해당 클래스가 import 되는 게 당연함

    • 내장 패키지(Built-in Package) : 자주 사용하는 패키지가 들어가 있음(java.lang, java.util 등등)

  • static import문

    • static 멤버 호출시 클래스명을 생략할 수 있음

    • 선언

import static 패키지명.클래스명;
import static 패키지명.*;


import static java.lang.Math.*;
import static java.lang.Math.random;
package com.study.halle.week7;

import static java.lang.Math.*;

public class TestPackage {

    public static void main(String[] args) {
        // System.out.println("random = " + Math.random());
        System.out.println("random = " + random());    // static import문을 사용시
    }
} 

 

3. 클래스패스

 

  • 컴파일러나 JVM이 클래스의 위치를 찾을 때 사용하는 경로

  • 지정해주지 않으면 기본적으로 현재 디렉터리가 클래스 패스로 지정됨

  • 세미콜론(;)을 구분자로 하여 여러 개의 경로를 지정할 수 있음

  • 지정하는 방법
    • 클래스 패스 환경변수

      • 시스템에서 어디서든 참조 할 수 있게 환경변수로 설정

    • -classpath 옵션

      • cmd에서 자바 컴파일 또는 실행시 명령어을 통해 임시로 지정 할 수 있음

명령어 -classpath 클래스패스 경로
명령어 -cp 클래스패스 경로


javac -classpath D:\java\jdk1.8.0_101 Test.java

 

4. 접근 지시자(Access Modifier)

 

  • 외부로부터 접근 제한을 막기 위한 역할

    • 데이터가 유효한 값을 유지하도록 하기 위해서 또는 접근할 필요가 없는 멤버들을 감추기 위해서 사용하며 이것을 캡슐화(Encapsulation)라고 함

  • 클래스, 멤버 변수, 메서드, 생성자에 사용될 수 있음

  • 접근 지시자가 없으면 default를 의미함

  • public > protected > (default) > private 순으로 범위가 좁아짐

출처 - https://opentutorials.org/module/516/6061
출처 - Java의 정석

 

※ 참조

 

Java의 정석

www.tcpschool.com/java/java_usingClass_package

 

 

 

'Study' 카테고리의 다른 글

[Study-9주차] 예외 처리  (0) 2021.01.12
[Study-8주차] 인터페이스  (0) 2021.01.04
[Study-6주차] 상속  (0) 2020.12.22
[Study-5주차] 클래스  (0) 2020.12.13
[Study-4주차] 제어문  (0) 2020.12.07