DevCastleOne

[JAVA] 자바 패키지란?

2020. 12. 30. 20:13

목표

1. package 키워드

2. import 키워드

3. 클래스 패스

   - CLASSPATH 환경변수

  -classpath 옵션

4. 접근제어자

 

1. package 키워드

 

선언 : "package 패키지명"

 

- 클래스를 구분짓는 디렉토리

- 클래스명이 같더라도 다른 패키지에 존재한다면 중복 이름 가능

- 모든 클래스는 패키지 안에 존재해야 하며 기본적으로 이름없는 패키지에 존재하게 됨

 

2. import 키워드

 

※ import문의 선언

 

<선언방식>

import 패키지명.클래스명

or import 패키지명.*

 

- 소스파일에 사용된 클래스의 패키지에 대한 정보를 제공

- 다른 패키지에 있는 클래스를 사용하고자 할때 사용함

 

※ static import문의 선언

 

<선언방식>

import static 패키지명.클래스명

or import static 패키지명.*

 

- static멤버를 호출할때 사용됨

 

import static java.lang.Math.*;

public class Test {
    public static void main(String[] args) {
        System.out.println(random());
    }
}

import static을 하지 않을경우
Math.random()으로 호출을 해야하지만 import static을 하게 되면 클래스명을 제거할수있다.

 

3. 클래스패스

클래스를 찾기위한 경로이다.

JVM이 코드를 실행할때 클래스 파일을 찾기 위한 경로가 필요한다.

JVM은 CLASSPATH 경로를 참조하여 클래스들의 위치를 참조하게 된다.

.java 파일을 컴파일한후에 .class 로 생긴 파일을 실행시킬때 파일들을 찾기위해 클래스 패스에 지정된 경로를 사용한다.

 

클래스 패스지정 두가지 방법

1. CLASSPATH 환경변수 

2. -classpath 옵션 사용

 

1. CLASSPATH 환경변수

 

 

윈도우 기준)

고급 시스템 설정(컴퓨터 시스템 변수 설정)에서 CLASSPATH를 추가 해줄수있다.

JVM이 시작될때 클래스 로더는 시스템 변수에 저장되어있는 환경변수를 보고 해당 클래스들을 메모리에 로딩한다.

 

 

 

2. -classpath 옵션 사용

 

java runtime시에 -classpath 옵션을 사용하요 클래스 파일들의 경로를 잡아줄수 있다.

컴파일(javac)와 프로그램실행(java) 명령어를 사용할때 유용하다.

 

class Customer{

    public void print(){
        System.out.println("Customer");
    }

}

public class Shop {

    public static void main(String[] args) {

        Customer c = new Customer();
        c.print();

    }

}

Test폴더에 있는 Shop.java 파일이 있다고 가정한다면

컴파일후 C:\Test\Shop.class , Customer.class가 존재하게 된다.

Customer.class 파일을 C:\Test\lib 아래로 파일을 옮긴후 

명령어를 java Shop 사용하게 된다면 에러가 난다.

lib안의 Customer.class 파일을  못찾기 때문이다.

 

명령어 : java -classpath ".;lib" Shop를 하면 실행결과가 잘 나온다.

 

".lib"에서

. : 현재 디렉토리에서 클래스를 찾겠다.

; : 경로를 구분해주는 구분자

lib : 현재 디렉토리에 없으면 현재 디렉토리의 하위 디렉토리중 lib에서 클래스를 찾겠다.

 

 

4. 접근 제어자 ( modifier ) 

접근제어자는 정보 은닉을 위해 접근 제어자를 제공하고 있다.

클래스,메서드,변수,인스턴스를 선언할때 사용한다.

4가지 접근 제어자를 제어한다.

 1. private 

 2. public

 3. default

 4. protected

 

 

 

 

www.tcpschool.com/java/java_modifier_accessModifier

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

opentutorials.org/course/1

'JAVA' 카테고리의 다른 글

JAVA] Enum은 무엇인가?  (0) 2021.02.06
JAVA] 예외처리 하는 방법  (0) 2021.01.15
자바 Dispatch란? ( static , dynamic , double Dispatch )  (0) 2020.12.25
자바 상속이란?  (0) 2020.12.25
[JAVA] 클래스란?  (0) 2020.12.16

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band