전공수업정리/Java

[JAVA]패키지

킹대왕너구리 2024. 5. 10. 15:31

패키지(package)

-서로 관련 있는 클래스나 인터페이스의 컴파일 된 클래스(.class)의 파일들을 한 곳에 묶어 놓는 것

-패키지는 관련된 클래스 파일들이 들어 있는 디렉토리(파일 시스템의 폴더)

-만약 같은 이름의 클래스가 있다면 충돌이 일어나겠지만 각각 다른 패키지에 같은 이름의 클래스가 있다면 충돌이 발생하지 않습니다.

-패키지를 사용하면 비슷한 성격의 클래스들끼리 묶을 수 있어 클래스의 분류가 용이합니다. 

 

com.example.project 이라는 패키지는

com/example/project 라는 경로에 해당하는 디렉토리가 있습니다.

 

 

 

6.2 import 클래스와 경로

-패키지 사용하기

패키지를 사용하려면 경로명을 사용하여야 합니다. 하지만 예를 들어 Scanner 클래스를 사용할 때마다 java.util.Scanner을 작성하기에는 상당히 번거롭고 귀찮습니다. 그래서 우리는 import문을 사용합니다.

-import

import 패키지.클래스;

다음 과 같이 클래스 경로명을 알려줄 수 있습니다.

 

import문은 반드시 소스코드 앞부분에 작성되어야 합니다.

import java.util.Scanner;
public class ImportExample {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
	}
}

 

패키지 안에 있는 여러 클래스를 사용하고 싶은 경우 *을 사용하여 한번에 선언할 수도 있습니다.

import 패키지.*;
import java.util.*;
public class ImportExample {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
	}
}

 

 

6.3 패키지 만들기

-패키지 선언

클래스 파일은 반드시 패키지에 소속되어야 합니다. 클래스가 소속도리 패키지 명은 package 키워드를 사용합니다.

package를 이용하는 코드는 소스파일의 첫줄에 선언합니다.

package 패키지명;

UI라는 이름의 패키지(UI 디렉터리)에 Tools 클래스를 저장하고자 한다면 다음과 작성하면 됩니다.

package UI;

public class Tools{
 (생략)
}

 

이제 다른 패키지에 있는 클래스에서 Tools 클래스를 사용하고자 하면, 다음과 같이  import문을 사용하면 됩니다.

import UI.Tools;

 

디폴트 패키지(default package)

package를 사용하지 않고 자바의 클래스나 인터페이스를 작성하면 해당 클래스와 인터페이스는 어느 패키지에 속할까요?

바로 디폴트 패키지에 소속시킵니다. 

즉 처음에 클래스파일을 만들때, 패키지를 만들지 않고 클래스 파일을 만든다면 디폴트 페키지에 속하는 것이 됩니다.

 

패키지의 특징 정리

1. 동일한 이름의 클래스나 인터페이스가 서로 다른 패키지에 속할 수 있어 충돌을 방지할 수 있다.

2. 클래스와 인터페이스를 논리적으로 그룹화 할 수 있다.

3. public, protected, default의 경우 패키지 내부에서만 접근 가능할 수 있게 하여 접근 제어를 통해 캡슐화를 강화할 수 있습니다.

4. 코드의 중복을 줄이고 개발 시간과 비용을 절약할 수 있습니다.

5. 패키지 단위로 문서화하고 테스트를 할 수 있기에 코드 품질을 관리하기 더 용이합니다.

 

 

 

본 글은 교재 명품 JAVA Programming (개정4판)을 참고했음을 밝힙니다.

'전공수업정리 > Java' 카테고리의 다른 글

[JAVA]입출력 스트림과 파일 입출력  (0) 2024.05.27
[JAVA]StringBuffer 클래스  (0) 2024.05.16
[JAVA]String 클래스  (1) 2024.05.15
[JAVA]Object class,프로세스,스레드,toString(),equal()  (0) 2024.05.15
[JAVA] 모듈  (0) 2024.05.10