Java에서 패키지(Package)는 관련 있는 클래스와 인터페이스를 하나로 묶어 관리하는 공간이다.
쉽게 생각하면 패키지 = 폴더라고 생각하면 이해하기 쉽다.
프로젝트가 커지면 클래스 파일이 많아지기 때문에 패키지를 이용하면 파일을 목적에 따라 나누어 관리할 수 있다.
패키지에 속한 클래스나 인터페이스는 패키지 이름과 동일한 디렉터리에 저장된다.
예를 들어 다음과 같은 패키지가 있다고 하자.
package com.example.student;
그러면 일반적으로 디렉터리 구조는 다음과 같이 구성된다.
src
└── com
└── example
└── student
├── Student.java
└── Score.java
즉
com.example.student
이라는 패키지는 실제 디렉터리에서는
com/example/student
형태로 표현된다.
Java 패키지는 다른 패키지를 포함하는 계층적인 구조로 만들 수 있다.
이때 패키지의 계층은 점(.)으로 구분한다.
예를 들어,
com.example
com.example.student
com.example.teacher
와 같이 사용할 수 있다.
이를 디렉터리 구조로 표현하면 다음과 같다.
com
└── example
├── student
└── teacher
따라서 패키지 이름의 .은 디렉터리의 /와 대응된다고 생각하면 된다.
com.example.student
↓
com/example/student
클래스를 특정 패키지에 포함시키려면 클래스 파일의 가장 위쪽에 package를 작성한다.
package com.example.student;
public class Student {
}
이렇게 작성하면 Student 클래스는
com.example.student
패키지에 속하게 된다.
package선언은 일반적으로 Java 파일의 가장 위쪽에 작성한다.
다른 패키지에 있는 클래스를 사용하려면 import 문을 사용할 수 있다.
import를 사용하면 클래스의 전체 패키지 경로를 매번 작성하지 않고 클래스 이름만으로 사용할 수 있다.
예를 들어 Java에서 자주 사용하는 Scanner 클래스는
java.util.Scanner
패키지에 포함되어 있다.
import를 사용하면 다음과 같이 작성할 수 있다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
}
}
import가 없다면 다음처럼 전체 이름을 작성해야 한다.
java.util.Scanner scanner =
new java.util.Scanner(System.in);
따라서 import를 사용하면 코드가 훨씬 간결해진다.
import 문은 클래스 선언보다 먼저 작성한다.
기본적인 형태는 다음과 같다.
import 패키지이름.클래스이름;
또는
import 패키지이름.*;
두 가지 방법이 있다.
특정 패키지에서 하나의 클래스만 사용하고 싶다면 클래스 이름까지 작성한다.
import java.util.Scanner;
이제 Scanner를 사용할 때
Scanner scanner = new Scanner(System.in);
처럼 클래스 이름만 작성할 수 있다.
import 패키지이름.클래스이름;
import java.util.ArrayList;
java.util 패키지의 ArrayList만 가져오는 것이다.
특정 패키지에 있는 모든 클래스를 클래스 이름만으로 사용하고 싶다면 *을 사용할 수 있다.
import java.util.*;
이렇게 하면 java.util 패키지에 있는 여러 클래스를 사용할 수 있다.
예를 들어,
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<Integer> list = new ArrayList<>();
}
}
위 코드에서는 Scanner와 ArrayList를 모두 클래스 이름만으로 사용할 수 있다.
import 패키지이름.*;
| 형태 | 설명 |
|---|---|
import 패키지이름.클래스이름; | 특정 클래스만 import |
import 패키지이름.*; | 해당 패키지의 모든 클래스를 import |
예를 들어,
import java.util.Scanner;
→ Scanner만 사용
import java.util.*;
→ java.util 패키지의 여러 클래스를 사용할 수 있음
패키지는 Java에서 클래스와 인터페이스를 묶어서 관리하는 공간이다.
쉽게 말하면,
패키지 = 클래스들을 정리해 놓은 폴더
라고 생각하면 된다.
그리고 다른 패키지의 클래스를 사용할 때는 import를 사용한다.
package
↓
클래스들을 그룹으로 관리
import
↓
다른 패키지의 클래스를 간편하게 사용
package는 클래스를 묶어 관리하기 위한 공간이고, import는 다른 패키지의 클래스를 쉽게 사용하기 위한 문법이다.