본문 바로가기
IT/Java

[Java Study] 7일차 package와 import

by Dblog 2020. 12. 31.
728x90

학습할 것

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

 


 

package 키워드

클래스들을 구분하는 폴더, 집합의 개념입니다.

클래스에는 맴버 변수와 메소드를 담고 있다면 Package에는 Java 클래스를 담습니다. 클래스를 공부할 때 붕어빵 틀에 비유 했다면 패키지는 붕어빵 가게가 될 수 있을것 같습니다.

Packgage 이름을 명명하는 방법은 딱히 정해져 있지 않지만 최소한의 규칙이 있습니다.

  • 숫자로 시작해서는 안되며 , _ . $를 제외한 특수 문자를 사용할 수 없다.
  • java로 시작하는 패키지는 Java 표준 API에 사용하고 있기 때문에 사용할 수 없다

 

또한 패키지 이름의 시작에 따라 몇 특징이 나뉩니다.

  • java : 자바 기본 패키지
  • javax : 자바 확장 패키지
  • org : 일반적으로 비 영리단체
  • com : 일반적으로 영리단체

 

※ 패키지를 빌드하는 방법

이클립스, Intellij와 같은 IDE환경에서는 자동으로 패키지까지 빌드를 해주지만 터미널 환경에서 javac hello.java를 빌드하면 패키지까지 빌드되지 않습니다.

javac -d hello.java

-d 옵션을 넣고 빌드해야 패키지 폴더 까지 빌드됩니다.

 

 

import 키워드

같은 패키지 내에 있는 클래스는 아무 제약 없이 사용할 수 있지만 다른 클래스에 있는 클래스를 사용할 때는 2가지중 한가지 방법을 사용해야 다른 클래스를 사용할 수 있습니다.

1. 패키지와 클래스 모두 정의

다른 패키지의 패키지 이름과 클래스의 이름까지 정의하는 방법입니다.
관리도 어렵고 가독성이 떨어져 자주 사용하지는 않습니다.

package one

public class oneClass {
	//
}


// 다른 패키지
package two

public class twoClass {
    public static void main(String[] args) {
    	one.oneClass ones = new one.oneClass(); // 다른 패키지의 클래스를 가져옴
    }
}

 

2. import 사용

패키지의 이름을 import 로 선언하고 클래스를 사용할 때는 패키지 이름을 빼고 클래스 이름만 정의하여 사용하게 됩니다. 코드의 가독성이 좋고 import된 패키지 목록을 쉽게 확인할 수 있기 때문에 자주 사용되는 방법입니다.

package one

public class oneClass {
	//
}


// 다른 패키지
package two

import one;
public class twoClass {
    public static void main(String[] args) {
    	 oneClass ones = new oneClass(); // 다른 패키지의 클래스를 가져옴
    }
}

 

 

클래스패스

클래스패스는 프로그램을 실행할 때 JVM이나 Java 컴파일러가 클래스를 찾기 위한 경로입니다.

.java 파일을 컴파일 하면 바이트 코드 형태의(.class 파일)이 생성되는데 이 바이너리 파일을 실행하고 클래스 파일을 찾을때 classpath에 지정된 경로를 사용하게 됩니다.

 

classpath를 지정하는 방법으로는 두가지 방법이 있습니다.

  • CLASSPATH 환경변수 사용
  • java runtime 에 -classpath 옵션 사용

 

CLASSPATH 환경변수

터미널 환경에서는 명령어를 직접 사용하여 패키지의 위치를 미리 정의하는 방법이 있습니다.

CLASSPATH={path}

윈도우 환경에서는 따로 환경변수를 지정해서 사용합니다.

 

 

-classpath 옵션

java 파일을 컴파일 할 때 javac 의 옵션으로 사용됩니다. 

예를 들어 hello.java 파일이 C:testpackage에 존재하고 필요한 클래스 파일들은 C:otherpackage에 위치한다면 java 파일을 컴파일 할때 

javac -classpath C:otherpackage C:testpackage.hello.java

로 컴파일하면 사용할 수 있습니다.

 

접근지시자

접근 제어 지시자로 불리는 키워드는 public, private, default, protected 가 있습니다. 이 키워드 들은 접근할 수 있는 영역이 나누어져 있고 클래스, 메소드, 맴버 변수 앞에 선언할 수 있습니다.

접근 제어자 키워드의 접근 권한영역을 표로 만들면 아래와 같습니다.

지시자 클래스 내부 동일 패키지 상속받은 클래스 이외의 영역
private X X X
default X X
protected  X
public

 

 

참고문헌

-- https://ko.wikipedia.org/
-- https://studymake.tistory.com/424
-- https://powerku.tistory.com/75
-- https://kils-log-of-develop.tistory.com/430
-- 
728x90

댓글