티스토리 뷰

목표

자바의 패키지에 대해 학습하기

 

학습할 것

  • package 키워드

  • import 키워드

  • 클래스 패스

  • CLASSPATH 환경변수

  • -classpath 옵션

  • 접근 제한자

1. package 키워드

프로젝트를 개발할 때 많은 클래스를 작성해야 하기 때문에 클래스들을 체계적으로 관리하지 않으면 클래스 간의 관계가 복잡해진다.

자바에서는 클래스를 체계적으로 관리하기 위해 package 키워드를 사용한다.

 

윈도우에서 폴더를 만들어 파일을 저장하는 것처럼 자바에서는 패키지를 만들어 클래스를 저장하고 관리한다.

패키지는 클래스를 유일하게 만들어주는 식별자 역할을 하여 클래스 이름이 동일하더라도 패키지가 다르면 다른 클래스로 인식된다.

 

클래스의 전체 이름은 "패키지명+클래스명"이며 패키지가 상·하위로 구분되어 있다면 도트(.)를 사용하여 표현한다.

 

패키지는 클래스를 컴파일 하는 과정에서 자동으로 생성되는 폴더인데 컴파일러는 클래스에 포함되어 있는 패키지 선언을 보고 파일 시스템의 폴더로 자동 생성시킨다.

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

public class ClassName { … }

패키지 이름은 임의로 지어줄 수 있지만 몇 가지 지켜야 하는 규칙이 있다.

  • 숫자로 시작해서는 안되고 _, $를 제외한 특수 문자를 사용해서는 안 된다.

  • java로 시작하는 패키지는 자바 표준 API에서만 사용하므로 사용해서는 안 된다.
  • 모두 소문자로 작성하는 것이 관례이다.

대규모로 프로젝트를 진행할 때는 상호 간에 패키지가 서로 중복되지 않도록 회사 도메인 이름으로 패키지를 만드는데 이는 도메인은 유일한 이름이 되도록 검증되기 때문이다.

 

2. import 키워드

같은 패키지에 속하는 클래스들은 조건 없이 다른 클래스들을 사용할 수 있지만 다른 패키지에 속하는 클래스를 사용하기 위해서는 패키지와 클래스를 모두 기술하는 방법과 import 키워드를 활용하는 방법이 있다.

 

① 패키지와 클래스를 모두 기술하는 방법

package com.tistory.teamo

public Class Test {
	com.test.Tester tester = new com.test.Tester();
}

패키지와 클래스를 모두 기술하는 방법은 패키지 이름이 짧을 경우에는 큰 불편함이 없지만 패키지 이름이 길거나 기술해야 하는 클래스 수가 많다면 패키지 이름을 붙이는 것은 전체 코드가 지저분해질 수 있다.

 

② import 키워드를 활용하는 방법

첫 번째 방법이 아닌 주로 사용하는 방법으로 패키지를 import문으로 선언하고 클래스를 사용할 때 패키지를 생략하게 된다.

package com.tistory.teamo;

import com.test.Tester; // Tester 클래스만 선언
import com.test.*; // 해당 패키지에 있는 모든 클래스 선언

public class Tester {
	Tester tester = new Tester();
}

import 문이 작성되는 위치는 패키지 선언과 클래스 선언 사이가 된다. 패키지에 포함된 다수의 클래스를 사용해야 한다면 클래스별로 import문을 작성하지 않아도 클래스 이름을 생략하고 *를 사용하여 한번에 작성할 수 있다.

 

단, 주의해야 할 점은 import문으로 지정된 패키지의 하위 패키지는 import 대상이 아니므로 하위 패키지에 있는 클래스들도 사용하고 싶다면 import문을 하나 더 작성해주어야 한다. 즉 다음과 같이 작성해주어야 한다는 것이다.

import com.test.*;
import com.test.sample.*;

 

3. 클래스 패스

자바에서 클래스 패스란 JVM이 프로그램을 실행할 때 선언한 클래스들을 찾기 위한 기준이 되는 경로를 의미한다. 소스코드 파일(.java)을 컴파일하면 바이트 코드 파일(.class)로 변환되면서 JVM이 클래스 파일을 찾아 명령을 수행하게 되는데 이때 파일을 찾기 위해 확인하는 경로가 되며, 클래스 패스를 지정하지 않는 경우 자바의 경우 현재 디렉토리에서 찾는 과정을 거친다.

 

4. CLASSPATH 환경변수

클래스 패스를 지정하는 방법에는 두 가지가 있는데 그 중 첫 번째 방법은 CLASSPATH 환경변수를 사용하는 방법이다.

컴퓨터의 시스템 변수 설정을 통해 지정하는 것으로 JVM이 시작될 때 환경 변수를 호출하는 방식으로 동작한다.

 

5. -classpath 옵션

클래스 패스를 지정하는 두 번째 방법은 -classpath 옵션을 지정하는 것으로 자바 컴파일러가 클래스들을 찾기 위해 참조할 경로들을 지정해주는 옵션으로 다음과 같은 방법으로 사용할 수 있다.

java -classpath 클래스파일경로 클래스명

 

6. 접근 제한자

main() 메소드가 없는 대부분의 클래스는 외부 클래스에서 사용할 목적으로 설계된 라이브러리 클래스이다. 그리하여 라이브러리 클래스를 설계할 때 외부 클래스에서 접근할 수 있는 멤버와 접근할 수 없는 멤버로 구분해 필드, 생성자, 메소드를 설계하는 것이 좋다.

 

자바는 이러한 기능을 구현하기 위해 접근 제한자(Access Modifier)를 제공하고 있으며 접근 제한자는 public, protected, default, private로 총 네 가지 종류가 있으며 다음의 표를 통해 각 접근 제한자의 역할에 대해 확인할 수 있다.

 

접근 제한 적용 대상 접근할 수 없는 클래스
public 클래스, 필드, 생성자, 메소드 없음
protected 필드, 생성자, 메소드 자식 클래스가 아닌 다른 패키지에 소속된 클래스
default 클래스, 필드, 생성자, 메소드 다른 패키지에 소속된 클래스
private 필드, 생성자, 메소드 모든 외부 클래스

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2025/02   »
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
글 보관함