반응형

목표

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

 

학습할 것

 

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

 

 


package 키워드

자바에서 패키지란 클래스를 구분짓는 클래스들의 모음이다.

패키지를 사용하는 가장 큰 이유는 클래스명의 고유성을 보장하기 위해서이다. 만약 서로 다른 개발자가 이름이 같은 클래스를 생성했다고 가정할 때 서로 다른 패키지를 사용함으로써 충돌을 피할 수 있다. 

 

명명 규칙

  • 회사 이름이나 혹은 도메인(웹 사이트주소)등은 유니크하기 때문에 사이트명으로 많이 구분한다.
  • 웹사이트 주소를 반대로 기재한 모양으로 패키지 이름을 부여합니다.
  • 명칭 소문자 사용
  • 소스 파일들을 각각의 그룹으로 구분하기 위해 점(.)으로 구분
  • 패키지 이름으로 소스가 들어가는 폴더가 자동으로 만들어 집니다.

패키지 선언

package 패키지명;

 

패키지 선언문은 반드시 소스파일에서 첫 번째 문장이어야 한다.

 

 

import 키워드

외부 패키지의 클래스를 불러 사용하고자 할 경우 원래는 클래스명 앞에 패키지를 명시해야 한다. 이 번거로움을 import 키워드를 이용해서 패키지 명을 생략할 수 있다.

 

import 키워들 사용하지 않고 PackageOne이라는 객체를 생성해 보았다.

 

import 키워드를 사용해서 PackageOne 객체를 생성해 보았다.

 

위의 코드를 비교해 보았을 때 import 키워드를 사용하지 않고 외부 클래스를 얼마든지 사용할 수 있지만 코드 가독성에서는 import 키워드를 사용한 쪽이 더 낫다고 생각한다. 

 

static import

자바 클래스에서 static 메소드는 클래스에 대한 인스턴스 생성없이 메소드를 사용할 수 있다.

static 메소드를 static import를 사용해서 클래스명 없이 바로 사용할 수 있다.

 

 

만약 같은 클래스에 같은 이름의 static 메소드가 있다면 어떻게 될까?

 

똑똑한 intellij가 알려주고 있다. 그렇다 해당 클래스에 같은 이름의 static 메소드가 있다면 해당 클래스에 있는 static 메소드를 실행이 된다.

 

 

클래스패스(classpath)

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

 

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

  1. 소스 코드(.java)를 컴파일하면 소스 코드가 바이트 코드(.class)로 변환된다.
  2. java runtime으로 이 .class 파일에 포함된 명령을 실행하려면 먼저 이 파일을 찾을 수 있어서 한다. 이때 .class 파일을 찾을 때 classpath에 지정된 경로를 사용된다.
  3. classpath는 .class 파일이 포함된 디렉토리와 파일을 콜론으로 구분한 목록이다.
  4. java runtime은 이 classpath에 지정된 경로를 모두 검색해서 특정 클래스에 대한 코드가 포함된 .class 파일을 찾는다.
  5. 찾으려는 클래스 코드가 포함된 .class 파일을 찾으면 첫 번째로 찾을 파일을 사용한다.

 

classpath 지정할 수 있는 방법 두가지

  • 환경 변수 CLASSPATH를 사용하는 방법
  • java runtime에 -classpath 플래그를 사용하는 방법

 

CLASSPATH 환경변수

환경변수는 운영체제에 지정하는 변수로 자바 가상머신과 같은 애플리케이션들은 환경변수의 값을 참고해서 동작게 된다.

자바는 클래스 패스로 환경변수 CLASSPATH를 사용하는데 이 값을 지정하면 실행할 때마다 -classpath 옵션을 사용하지 않아도 되기 때문에 편리하다.

하지만 운영체제를 변경하면 클래스 패스가 사라지기 때문에 이식성면에서 불리할 수 있다.

 

시스템 속성-> 환경 변수에서 설정할 수 있다.

 

 

접근지시자

아무나 함부로 접근하지 못하도록 접근의 허용 범위를 제한하는 용도이다.

클래스, 메소드, 변수에 모두 사용 가능하다.

 

(허용 범위가 큼) public > default > protected > private (허용 범위가 작음)

 

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

접근제어 지시자 표이다. 표와 같이 접근제어 지시자를 이용해서 해당 클래스나 메서드들을 접근할 수 있는 범위를 제한할 수 있다.

 

 

 

 

 

 

 

참조

codedragon.tistory.com/228

 

패키지이름(Package Name) 명명규칙, 패키지 명명 방법

패키지이름(Package Name) ·         애플리케이션을 구분하는 고유한 값 ·         여러분이 만든 앱이 디바이스에 설치되었을 때 다른 앱들과 구분하는 역할을 하므로 유일무이해야 합니

codedragon.tistory.com

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

 

자바 클래스패스(classpath)란?

클래스패스란(Class Path)란?? 클래스패스란 말 그대로 클래스를 찾기위한 경로이다. 자바에서 클래스패스의 의미도 똑같다. 즉, JVM이 프로그램을 실행할 때, 클래스파일을 찾는 데 기준이 되는 파

effectivesquid.tistory.com

opentutorials.org/course/1223/5527

 

클래스 패스 - 생활코딩

본 수업에서는 IDE(eclipse, intellij)를 사용하지 않고 운영체제의 기본 에디터를 사용 한다. 클래스 패스 빈 디렉터리에 아래와 같이 코드를 작성한다. 필자는 프로젝트 디렉토리에 /srcbin 이라는 디

opentutorials.org

 

728x90
반응형

+ Recent posts