Java - 패키지(Package)

Yuri Lee·2020년 9월 29일
0

Java

목록 보기
18/23

패키지

이전 시간에 클래스 패스를 배웠다. 클래스 패스란 컴퓨터의 저장장치 어딘가에 존재하는 클래스 파일을 사용하기 위한 방법이다. 이번 시간에 살펴볼 패키지(Package)는 하나의 클래스 안에서 같은 이름의 클래스들을 사용하기 위한 방법이라고 할 수 있다.

클래스가 많아짐에 따라서 같은 이름을 가진 클래스가 생겨날 가능성이 높아지게 되는데 이름의 충돌을 방지하기 위한 고안된 것이 패키지라고 할 수 있다.

정보 공학에서는 '이름의 충돌'이라는 문제를 해결하기 위해서 다양한 노력을 하고 있다. 전역변수와 지역변수, 객체도 그런 연장선에 있다고 볼 수 있다.

패키지 만들기

C:\workspace\javatutorials\src\com\yuri\javatutorials\object\CalculatorDemo4.java

\src : 프로젝트의 소스코드가 위치하는 경로, sts가 지정한 것
\com\yuri\javatutorials\object\ : 이 경로는 다음의 패키지 이름과 일치한다.

package com.yuri.javatutorials.object;

패키지는 기본적으로 디렉터리와 일치한다. 그렇기 때문에 아래의 패키지들은 물리적으로 같은 디렉터리에 존재할 수 없다.

예시

package com.yuri.javatutorials.packages.example1;

public class A {

}
package com.yuri.javatutorials.packages.example1;

public class B {
    public static void main(String[] args) {
        A a = new A();
    }
}

package com.yuri.javatutorials.packages.example2;
import  com.yuri.javatutorials.packages.example1.*;

public class C {
    public static void main(String[] args) {
        A a = new A();
    }
}

서로 다른 패키지에 있는 클래스를 가져오려면 import를 통해서 다른 패키지의 클래스를 현재의 소스코드로 불러와야 한다. 만약 특정 패키지에 있는 모든 클래스를 로드하고 싶다면 위와 같이 하면 된다.

손 컴파일

자 손으로 컴파일을 해보자. 개발도구 없이 코딩하는 경우는 거의 없다.

프로젝트 디렉터리의 구성

  • src : 소스 코드가 들어있다.
  • bin : 컴파일된 클래스 파일이 들어있다.

bin은 바이너리의 약자, src는 소스를 줄인 것
바이너리 안에 바이트 코드 형태로 저장되어있는 클래스가 위치하게 된다. src는 사람이 이해할 수 있는 코드, bin 안에 있는 것은 vm이 이해할 수 있는 것이다.

중복의 회피

package com.yuri.javatutorials.packages.example3;

import  com.yuri.javatutorials.packages.example1.*;
import  com.yuri.javatutorials.packages.example2.*;

public class D {
	public static void main(String[] args) {
		B b = new B();
	}
}

example1, example2 패키지 안에 모두 B 클래스가 있을 경우 아래와 같은 오류가 발생한다.

클래스 B의 이름이 중복되기 때문에 애매함(ambiguous)의 문제가 발생한다. 아래와 같은 방법으로 이 문제를 우회할 수 있다.

package com.yuri.javatutorials.packages.example3;

import  com.yuri.javatutorials.packages.example1.*;
import  com.yuri.javatutorials.packages.example2.*;

public class D {
	public static void main(String[] args) {
		com.yuri.javatutorials.packages.example2.B b = new com.yuri.javatutorials.packages.example2.B();
	}
}

이 글은 생활코딩의 자바 강좌를 바탕으로 정리한 내용입니다.

profile
Step by step goes a long way ✨

0개의 댓글