티스토리 뷰

주의 사항!

  • 이 글은 제가 직접 공부하는 중에 작성되고 있습니다.
  • 따라서 제가 이해하는 그대로의 내용이 포함됩니다.
  • 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다.


같은 패키지에 속하는 클래스들은 아무런 조건 없이 다른 클래스를 사용할 수 있지만 다른 패키지에 속하는 클래스를 사용하려면 두 가지 방법 중 하나를 선택해야 합니다. 첫 번째 방법은 패키지와 클래스를 모두 기술하는 것입니다. 다음은 com.hankook 패키지에 소속된 Tire 클래스를 이용해서 필드를 선언하고 객체를 생성한 것입니다.

package com.mycompany

public class Car
{
	com.hankook.Tire tire = new com.hackook.Tire();
}

이런 방법은 패키지 이름이 짧을 경우에는 불편함이 없겠지만, 패키지 이름이 길거나 이렇게 사용해야 할 클래스의 수가 많다면 패키지 이름을 붙인다는 것은 전체 코드를 난잡해 보이게 할 수 있습니다. 그래서 두 번째 방법인 import문을 주로 사용합니다. 

 

사용하고자 하는 패키지를 import문으로 선언하고, 클래스를 사용할 때에는 패키지를 생략합니다.

package com.mycompany

import com.hankook.Tire;    //또는 inport com.hankook.*;

public class Car
{
	Tire tire = new Tire();
}

import 문이 작성되는 위치는 패키지 선언과 클래스 선언 사이입니다. 패키지에 포함된 다수의 클래스를 사용해야 한다면 클래스별로 import 문을 작성할 필요 없이 클래스 이름을 생략하고 대신 *을 이용해서 import 문을 작성하면 됩니다. *는 패키지에 속하는 모든 클래스들을 의미합니다.

 

주의할 점은 import문으로 지정된 패키지의 하위 패키지는 import의 대상이 아니라는 것입니다. 만약 하위 패키지에 있는 클래스들도 사용하고 싶다면 import 문을 하나 더 작성해야 합니다. 예를 들어 com.mycompany 패키지에 있는 클래스도 사용해야 하고, com.mycompany.project 패키지에 있는 클래스도 사용해야 한다면 다음과 같이 두 개의 import 문이 필요합니다.

import com.mycompany.*;
import com.mycompany.project.*;

 

패키지 이름 전체를 기술하는 첫 번째 방법이 꼭 필요한 경우가 있는데, 서로 다른 패키지에 동일한 이름의 클래스가 존재하고, 두 패키지가 모두 import 되어 있을 경우입니다. 예를 들어서 com.mycompany 패키지와 com.yourcompany 패키지에 동일한 이름의 Car 클래스가 있고, 두 패키지가 모두 import 되었다고 가정해 보겠습니다. 이럴 때에 Car 클래스를 이용해 객체를 생성하고자 할 때는 대체 어떤 Car 클래스를 이용해야 하는지 컴파일러가 알 수 없습니다.

package pack;

import com.mycompany.Car;
import com.yourcompany.Car;

public class ClassName
{
	public static void main(String[] args)
	{
		Car porsche = new Car();    //두 패키지의 Car 클래스 중 어떤 것?
	}
}

따라서 위와 같은 코드는 컴파일 에러를 발생시킵니다. 이런 경우에는 어떤 패키지의 클래스를 사용하고자 하는지 명확히 하기 위해 클래스의 전체 이름을 사용해야 합니다.

package pack;

import com.mycompany.Car;
import com.yourcompany.Car;

public class ClassName
{
	public static void main(String[] args)
	{
		com.mycompany.Car porsche = new com.mycompany.Car();
	}
}

 

'공부 일지 > JAVA 공부 일지' 카테고리의 다른 글

자바, Getter와 Setter 메서드  (0) 2021.04.07
자바, 접근 제한자  (0) 2021.04.07
자바, 패키지  (0) 2021.04.07
자바, final 필드와 상수  (0) 2021.04.07
자바, 싱글톤(Singleton)  (0) 2021.04.07
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함