package
📌 패키지(Package)는 Java에서 클래스를 그룹으로 묶어 관리하는 폴더 같은 개념이다. 관련된 클래스들을 함께 묶어서 하나의 패키지로 정의함으로써 코드의 구조를 더 체계적이고 조직적으로 유지할 수 있다.
패키지의 장점
- 코드의 논리적 그룹화: 비슷한 기능이나 역할을 하는 클래스들을 하나의 패키지에 넣어 관리할 수 있습니다.
- 네임스페이스 제공: 서로 다른 패키지에 같은 이름의 클래스가 있어도 충돌이 발생하지 않습니다.
- 접근 제어 강화: 특정 클래스나 멤버가 패키지 내에서만 접근 가능하게 하여 클래스 간의 의존성을 조절할 수 있습니다.
패키지 선언
패키지는 package 키워드를 통해 클래스 파일의 최상단에 선언하며, 선언된 패키지 경로는 실제 파일 경로와 일치해야 합니다.
- 패키지는 상위 패키지와 하위 패키지를 도트(.)로 구분합니다.
- package 상위 패키지.하위 패키지; 이렇게 선언할 수 있습니다.
- 예를 들어 oop.pk1이라는 패키지와 oop.pk2라는 패키지가 있다고 가정해 보겠습니다.
- 두 패키지에 모두 Car 클래스가 존재한다면? 그리고 이를 사용하려고 한다면?
- Java는 패키지의 경로를 통해 이를 구분합니다.
- 아래 예제를 통해 확인해 보겠습니다.
oop.pk1.Car 클래스
package oop.pk1;
public class Car {
public void horn() {
System.out.println("pk1 빵빵");
}
}
oop.pk2.Car 클래스
package oop.pk2;
public class Car {
public void horn() {
System.out.println("pk2 빵빵");
}
}
main 메서드
package oop.main;
public class Main {
public static void main(String[] args) {
oop.pk1.Car car = new oop.pk1.Car();
car.horn(); // pk1 빵빵
oop.pk2.Car car2 = new oop.pk2.Car();
car2.horn(); // pk2 빵빵
}
}
import
📌 Java에서 다른 패키지에 있는 클래스를 가져와서 사용할 수 있게 해주는 키워드입니다. 이를 통해 특정 패키지에 속한 클래스들을 코드에 포함하고, 해당 클래스의 메서드와 필드에 접근할 수 있습니다.
- 위에서 살펴본 oop.pk1이라는 패키지와 oop.pk2라는 패키지를 import로 명시해 보겠습니다.
- import oop.pk1.Car;, import oop.pk2.Car;
- 클래스 이름을 생략하고 *를 사용하여 import oop.pk1.*; 이렇게 표현하면 oop.pk1 패키지 아래에 있는 모든 클래스를 사용할 수 있습니다.
- 다만 서로 다른 패키지에 있는 같은 이름의 클래스를 동시에 사용하려면 해당 클래스에 패키지 명을 전부 명시해야 합니다.
- 아래 예제를 통해 확인해 보겠습니다.
oop.pk1.Car 클래스
package oop.pk1;
public class Car {
public void horn() {
System.out.println("pk1 빵빵");
}
}
oop.pk2.Car 클래스
package oop.pk2;
public class Car {
public void horn() {
System.out.println("pk2 빵빵");
}
}
main 메서드
package oop.main;
public class Main {
public static void main(String[] args) {
oop.pk1.Car car = new oop.pk1.Car();
car.horn(); // pk1 빵빵
oop.pk2.Car car2 = new oop.pk2.Car();
car2.horn(); // pk2 빵빵
}
}
위처럼
import 패키지명.클래스명;
이런 방식으로 하나씩 코드에 추가하는 방법도 있지만
import 패키지명.*;
이런 방식으로 패키지(폴더)내 모든 클래스를 가져올 수도 있다.
'Back-End (Web) > JAVA' 카테고리의 다른 글
[JAVA] 인터페이스 (2) | 2024.11.12 |
---|---|
[JAVA] 클래스 간의 관계와 상속 (0) | 2024.11.12 |
[JAVA] 접근 제어자 (1) | 2024.11.12 |
[JAVA] This와 This() (0) | 2024.11.12 |
[JAVA] 생성자 (1) | 2024.11.12 |