본문 바로가기
JAVA

[JAVA] 패키지

by A Coder's Daydream 2024. 10. 22.
SMALL

패키지란?

패키지(package)는 클래스들을 구분 짓는 폴더와 비슷한 개념이다.

 

자바를 개발할 때 클래스들을 분류하지 않으면 이름이 중복되거나, 어떤 클래스가 어떤 일을 하는지 혼동되는 일이 발생한다. 그래서 존재하는 것이 패키지다.

 

패키지 제약사항

  • 소스의 가장 첫 줄에 있어야 한다.
    (패키지 선언 위에 주석이나 공백은 있어도 상관없다.)
  • 패키지 선언은 소스 하나에는 하나만 있어야 한다.
  • 패키지 이름과 위치한 폴더 이름이 같아야 한다.
    (해당 파일이 존재하는 위치와 동일하게 패키지를 지정해야 한다.)

 

패키지명 유의사항

  • 패키지명은 모두 소문자로 지정해야 한다.
  • 자바의 예약어(int, static 등)가 패키지명에 들어 있으면 안된다.
  • 상위 패키지를 import하더라도 서브 패키지의 클래스를 사용할 수 없다.
    (예를 들어 import.c.*; 이렇게 선언하면 package c로 선언한 클래스만 import하고, 그 하위 패키지에 선언한 c.javapackage나 c.javapackage.sub에 선언된 클래스는 import하지 않는다.)

 

import를 하지 않아도 되는 패키지

  • java.lang 패키지
  • 같은 패키지
    (같은 패키지에 있는지, 다른 패키지에 있는지 여부가 중요하다.)

 

다른 패키지에 있는 클래스 사용 방법

c.practice 패키지에 있는 Sample 클래스의 main 메소드에서 c.practice.sub 패키지에 있는 Practice1 클래스를 사용하려면 다음과 같이 import를 해야 한다.

package c.practice;

import c.practice.sub.Practice1;     //c.practice.sub에 존재하는 Practice1 클래스를 import

public class Sample {
    public static void main(String[] args) {
        Practice1 p1 = new Practice1();
    }
}

 

혹은 다음과 같이 import할 수도 있다.

package c.practice;

import c.practice.sub.*;     //c.practice.sub에 존재하는 모든 클래스를 import

public class Sample {
    public static void main(String[] args) {
        Practice1 p1 = new Practice1();
    }
}

 

만약, 다른 자바 프로젝트에 있는 패키지의 클래스를 사용하려면 현재 클래스에서 사용하고자 하는 자바 프로젝트의 의존성을 추가해야 한다.

 

static import라는 것은 어떻게 사용할까?

package1 패키지의 PK1 클래스에서 package2 패키지의 PK2 클래스에 있는 static 변수와 static 메소드를 사용할 때 import static을 사용할 수 있다.

패키지 구조

  • package2 패키지의 PK2 클래스 내의 static변수와 static 메소드

package2.PK2 클래스 코드

  • package1 패키지의 PK1 클래스에서 package2 패키지의 PK2 클래스에 있는 static변수와 static 메소드 호출

package1.PK1 클래스 코드

'JAVA' 카테고리의 다른 글

[JAVA] 상속, 메소드 오버라이딩, 형 변환  (0) 2024.10.22
[JAVA] 접근 제어자  (0) 2024.10.22
[JAVA] 메소드 오버로딩  (0) 2024.10.20
[JAVA] 배열  (0) 2024.10.20
[JAVA] String Constant Pool  (0) 2024.10.15