- 클래스 파일이 저장되어 있는 디렉토리 정보를 표시해서 인스턴스 생성하기 위해 사용
- 소스 파일에 별도의 선언이 필요 + 디렉토리도 잘 나누어야 함
* 패키지 선언
package 패키지 명;
ex) 다른 디렉토리에 있지만 이름이 동일한 클래스가 있는경우
이 경우 각각의 Circle 인스턴스를 생성하려면 먼저 소스파일에 패키지 선언을 하고 생성을 해야한다.
(AAA의 Circle.java)
//소스파일의 위에 패키지 선언을 한다.
//해당 클래스는 pack.AAA 라는 패키지에 묶인다.
package pack.AAA;
class Circle
{
int r;
public Circle(int rad)
{
r = rad;
}
}
|
(BBB의 Circle.java)
//해당 클래스는 pack.BBB 라는 패키지에 묶인다.
package pack.BBB;
class Circle
{
int r;
public Circle(int rad)
{
r = rad;
}
}
|
//각 Circle 인스턴스 생성시
pack.AAA.Circle c1 = new pack.AAA.Circle(10);
pack.BBB.Circle c2 = new pack.BBB.Circle(20);
|
패키지 이름은 pack.AAA와 pack.BBB이고 이것을 찾기 위해 C: 가 클래스패스에 포함되어 있어야 한다.
* 클래스 이름, 패키지 이름은 클래스 패스를 기준으로 찾는다.
* 클래스는 반드시 하나의 패키지에 포함 되어야 하는데 별도의 선언이 없는 경우 이름없는 패키지로 묶인다
--- why? 클래스의 접근허용 범위 때문에
- import
패키지에 포함되어 있는 인스턴스 생성시 불편...
import를 사용하여 미리 소스 파일의 앞에 선언해준다.
더 간단히 인스턴스를 생성할 수 있게 됨.
단, 클래스의 이름이 겹치는 경우는 모호함이 발생할 수 있기 때문에 잘 보고 사용한다.
-- 이런경우는 X
* 클래스는 반드시 하나의 패키지에 포함 되어야 하는데 별도의 선언이 없는 경우 이름없는 패키지로 묶인다
--- why? 클래스의 접근허용 범위 때문에
- import
패키지에 포함되어 있는 인스턴스 생성시 불편...
import를 사용하여 미리 소스 파일의 앞에 선언해준다.
import pack.AAA.Circle;
Circle c1 = new Circle(10);
|
더 간단히 인스턴스를 생성할 수 있게 됨.
단, 클래스의 이름이 겹치는 경우는 모호함이 발생할 수 있기 때문에 잘 보고 사용한다.
import pack.AAA.Circle;
import pack.BBB.Circle;
//각 인스턴스가 어느 패키지의 인스턴스인지 구분할 수 없음
Circle c1 = new Circle(10);
Circle c2 = new Circle(20);
|
-- 이런경우는 X
댓글 없음 :
댓글 쓰기