Notice
Recent Posts
Recent Comments
Link
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

기록하자..

패키지 | 백기선님 LIVE-STUDY 본문

자바

패키지 | 백기선님 LIVE-STUDY

P23Yong 2022. 5. 31. 15:47

패키지

학습할 것

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

package 키워드

패키지는 클래스와 인터페이스를 묶는 단위이다.

패키지는 서로 관련된 클래스들끼리 그룹 단위로 묶어 사용함으로써 클래스를 효율적으로 관리할 수 있게 한다.
또한 접근을 제어하고, 연관된 타입을 묶는 역할로도 사용할 수 있다.

패키지는 클래스의 일부분이라 할 수 있다. 패키지는 클래스를 유일하게 식별하게 만들어주는 식별자 역할을 한다.
클래스 이름이 동일하더라도 패키지가 다르면 다른 클래스로 인식한다. 클래스의 전체 이름은 "패키지명 + 클래스명"인데 패키지가 상.하위로 구분되어 있다면 도트(.)를 사용해서 다음과 같이 표현한다.

상위패키지.하위패키지.클래스

모든 클래스에는 정의된 클래스 이름과 패키지 이름이 있다. 이 둘을 합쳐야 완전하게 클래스를 표현할 수 있다.
이를 FQCN(Fully Qualified Class Name)이라 한다.

패키지 선언

패키지를 선언하는 방법은 다음과 같다.

package 상위패키지.하위패키지

패키지의 이름은 개발자의 마음대로 지어도 되지만, 지켜야할 규칙이 있다.

  • 패키지 이름은 클래스, 인터페이스와 겹치지 않도록 모두 소문자로 작성한다.
  • 숫자로 시작하면 안되고, _, $를 제외한 특수문자를 사용해서는 안된다.
  • java로 시작하는 패키지는 자바 표준 API에서만 사용하므로 사용해서는 안된다.

빌트-인 패키지 (Built-in package)

빌트인 패키지는 자바의 API에 포함되는 다수의 클래스를 포함하는 패키지이다.
java.lang, java.util 패키지가 대표적이라고 할 수 있다.

자바에서 java.lang같은 패키지의 경우 기본적인 것들이라 따로 import 하지 않아도 자바가 자동으로 import 해준다. 그렇기에 우리가 java.lang.String과 같은 클래스를 따로 import하지 않고 사용할 수 있다.

빌트인 패키지의 예시는 다음과 같다.

  • java.lang : language suppoart 클래스들을 포함사는 패키지
    • 프리미티브 타입이나 수학 연산의 정의가 되는 클래스들
    • 자동으로 import되기 때문에 해당 패키지의 클래스를 바로 사용할 수 있다.
  • java.io : 입출력 기능을 지원하는 클래스들을 포함하는 패키지
  • java.util : 자료구조 구현을 위한 유틸리티 클래스를 포함하는 패키지
  • java.applet : Applets을 생성하기 위한 클래스들을 포함하는 패키지
  • java.awt : GUI 컴포넌트를 구현하기 위한 클래스들을 포함하는 패키지
  • java.net : 네트워킹 기능을 지원하기 위한 클래스를 포함하는 패키지

참고 - 빌트 인 패키지

import 키워드

import키워드는 다른 패키지에 있는 클래스를 불러오기 위해 사용하는 키워드이다.


post패키지에 있는 Post클래스를 사용하기 위해 member 패키지에서 import를 사용해 Post클래스를 불러왔다.

두 클래스가 동일한 패키지에 있는 경우는 import할 필요가 없지만, 다른 패키지에 있는 클래스를 사용하기 위해서는 import를 사용해야 한다.

클래스패스

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

JVM이 프로그램을 실행할 때, 클래스 파일을 찾는 과정에서 기준이 되는 파일 경로를 말한다. JVM이 .java 파일을 컴파일한 바이트코드(.class 파일)에 포함된 명령을 실행하기 위해서 이 .class파일을 찾아야 하는데, .class 파일을 찾을 때, classpath에 지정된 경로를 사용한다.

이 classpath를 지정하는 방법은 두 가지가 있다.

  • CLASSPATH 환경변수 사용
  • Java Runtime에 -classpath 옵션을 사용

CLASSPATH 환경변수

환경변수

  • 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는, 동적인 값들의 모임
  • 운영체제에서 자식 프로세스들을 생성할 때 참조하는 변수

환경변수의 사용 이유

  • JDK를 설치하는 경로는 사용자마다 다를텐데, java를 실행하기 위해서는 설치된 경로까지 이동해서 javac 명령을 실행해야한다.
  • 하지만 자바가 설치되어 있는 경로를 시스템 변수로 설정하면 해당 디렉토리까지 이동하지 않고 컴파일이 가능하다.

-classpath 옵션

.class 파일을 실행할 때 사용할 클래스파일의 위치를 JVM에게 알려주는 역할을 한다.


다음과 같이 Hello.class 파일이 있다고 하고 java Hello를 통해 실행시켜보면 실행이 잘되는 것을 확인할 수 있다.

그런데, .class파일을 Dir 폴더를 만든 뒤 똑같이 java Hello를 통해 실행시키면

Error: Could not find or load main class Hello
Caused by: java.lang.ClassNotFoundException: Hello

위와 같이 클래스를 찾을 수 없다는 에러가 나온다.

이때 사용하는 것이 -classpath 옵션이다.

java -classpath ".:Dir" Hello

위 명령어를 통해 다시 실행시켜보면 출력이 잘 되는 것을 확인할 수 있었다.
-classpath 뒤에 파일의 절대 경로를 입력해주면 된다.

;(:)(윈도우에서는 ;, 맥이나 리눅스의 경우 :)를 사용해 경로와 경로를 구분해준다.

접근지시자

접근 지시자는 클래스, 메서드, 인스턴스, 클래스 변수를 선언할 때 사용한다. 이를 통해 다른 곳에서 접근을 허용할지 말지를 결정할 수 있다.

  • public
    • 누구나 접근할 수 있다.
  • protected
    • 같은 패키지에 있거나, 상속받는 경우 접근할 수 있다.
  • package-private (default)
    • 접근지시자를 지정해주지 않았을 때 default 값으로 같은 패키지 내에서 사용가능하다.
  • private
    • 해당 클래스 내에서만 접근이 가능하다.

참고자료

이것이 자바다

'자바' 카테고리의 다른 글

예외처리 | 백기선님 LIVE-STUDY  (0) 2022.05.31
인터페이스 | 백기선님 LIVE-STUDY  (0) 2022.05.31
상속 | 백기선님 LIVE-STUDY  (0) 2022.05.02
클래스 | 백기선님 LIVE-STUDY  (0) 2022.05.02
제어문 | 백기선님 LIVE-STUDY  (0) 2022.05.02