Back-End (Web)/JAVA

[JAVA] package와 import

JABHACK 2024. 11. 12. 15:02

package

📌 패키지(Package)는 Java에서 클래스를 그룹으로 묶어 관리하는 폴더 같은 개념이다. 관련된 클래스들을 함께 묶어서 하나의 패키지로 정의함으로써 코드의 구조를 더 체계적이고 조직적으로 유지할 수 있다. 

 

패키지의 장점

  1. 코드의 논리적 그룹화: 비슷한 기능이나 역할을 하는 클래스들을 하나의 패키지에 넣어 관리할 수 있습니다.
  2. 네임스페이스 제공: 서로 다른 패키지에 같은 이름의 클래스가 있어도 충돌이 발생하지 않습니다.
  3. 접근 제어 강화: 특정 클래스나 멤버가 패키지 내에서만 접근 가능하게 하여 클래스 간의 의존성을 조절할 수 있습니다.

패키지 선언

패키지는 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