티스토리 뷰
주의 사항!
- 이 글은 제가 직접 공부하는 중에 작성되고 있습니다.
- 따라서 제가 이해하는 그대로의 내용이 포함됩니다.
- 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다.
같은 패키지에 속하는 클래스들은 아무런 조건 없이 다른 클래스를 사용할 수 있지만 다른 패키지에 속하는 클래스를 사용하려면 두 가지 방법 중 하나를 선택해야 합니다. 첫 번째 방법은 패키지와 클래스를 모두 기술하는 것입니다. 다음은 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 |