반응형
개요
🔹 패키지(Package)란?
패키지는 관련된 클래스들을 묶어놓은 폴더(디렉터리) 구조이다.
- 클래스를 논리적으로 그룹화하여 이름 충돌을 방지하고, 코드를 관리하기 쉽게 만든다.
- 자바에서는 클래스 파일이 많아질 경우 패키지를 사용해 정리한다.
- 폴더 구조와 패키지 이름이 일치해야 한다.
🔹 임포트(Import)란?
- 다른 패키지의 클래스를 사용하려면 import 문을 사용해야 한다.
- 같은 패키지에 있는 클래스는 import 없이 바로 사용 가능하다.
패키지의 장점
- 이름 충돌 방지: 같은 이름의 클래스가 다른 패키지에서 존재할 수 있음.
- 코드 재사용: 필요한 패키지를 가져와 사용 가능.
- 코드 관리 용이: 논리적으로 관련된 클래스를 하나로 묶어 관리.
- 보안성: 패키지를 사용해 클래스의 접근 제어를 설정할 수 있음 (public, protected, default, private).
패키지 선언 방법
패키지를 사용하려면, 클래스 파일의 최상단에 package 키워드로 패키지를 선언해야한다.
일반적으로 소속.프로젝트.용도를 통해 패키지 이름을 결정한다.
src 폴더에 mypackage.vehicles를 생성해 주었다.
package mypackage.vehicles; // 패키지 선언
// Car 클래스 정의
public class Car {
public void drive() {
System.out.println("The car is driving.");
}
}
package mypackage.vehicles; // 패키지 선언
// Motorcycle 클래스 정의
public class Motorcycle {
public void ride() {
System.out.println("The motorcycle is riding.");
}
}
mypackage.vehicles 폴더 내에 Car와 Motorcycle 클래스를 생성해 준 뒤 패키지를 선언해 주었다.
import 사용
위에서 추가한 패키지 내부의 클래스들을 import 를 통해 불러와 사용할 수 있다.
import mypackage.vehicles.Car;
import mypackage.vehicles.Motorcycle;
public class Main {
public static void main(String[] args) {
Car car = new Car();
Motorcycle motorcycle = new Motorcycle();
car.drive();
motorcycle.ride();
}
}
또한 와일드카드(*)를 사용하여 패키지의 모든 클래스를 임포트 할 수 있다.
import mypackage.vehicles.*;
public class Main {
public static void main(String[] args) {
Car car = new Car();
Motorcycle motorcycle = new Motorcycle();
car.drive();
motorcycle.ride();
}
}
단, *를 사용하면 패키지 내 모든 클래스를 임포트하지만, 서브 패키지는 포함되지 않는다.
예를 들어 아래와 같이 코드를 작성한다면 Car와 Motorcycle클래스를 사용할 수 없다.
import mypackage.*; // 서브 클래스는 포함되지 않음
public class Main {
public static void main(String[] args) {
Car car = new Car();
Motorcycle motorcycle = new Motorcycle();
car.drive();
motorcycle.ride();
}
}
기본 제공 패키지
자바는 이미 기본적인 패키지를 제공한다.
- java.lang – String, Math, System 등 (기본 임포트, import 불필요)
- java.util – List, ArrayList, HashMap 등 (데이터 구조 및 유틸리티)
- java.io – 입출력 관련 클래스 (File, BufferedReader 등)
- java.net – 네트워크 관련 클래스 (Socket, URL 등)
- java.sql – 데이터베이스 관련 클래스 (Connection, ResultSet 등)
728x90
반응형
'웹(WEB) > 자바(Java)' 카테고리의 다른 글
[Java] 자바 Object 클래스 (0) | 2024.12.30 |
---|---|
[Java] 자바 제한자 (0) | 2024.12.30 |
[Java] 자바 객체지향 프로그래밍 (0) | 2024.12.29 |
[Java] 자바 생성자, this (1) | 2024.12.28 |
[Java] 자바 메서드 (0) | 2024.12.28 |