9. import
Source File를 작성할 때 다른 Package의 class를 사용할 때는 포함된 Package의 이름과 같이 사용해야한다.
하지만, 매번 작성하기기 불편하다.
Coding하기 전에 import문으로 사용하고자 하는 Class의 Package를 미리 명시하면
Source File에 사용되는 Class의 이름에서 Package명은 생략할 수 있다.
import문의 역할은 Compiler에게 Source File에 사용된 Class의 Package에 대한 정보를 제공하는 것이다.
컴파일러는 import문을 통해 Source File에 사용된 Class들의 Package를 알아 낸 다음,
모든 Class 이름 앞에 Package 이름을 붙여 준다.
import문은 Program 성능에 전혀 영향을 미치지 않는다.
import문을 많이 사용하면 Compile 시간이 아주 조금 더 걸릴 뿐이다.
-> import문의 선언
모든 Source File(.java)에서 import문은 Package문 다음에, 그리고 Class 선언 문 이전에 위치해야한다.
그리고 import문은 Package문과는 달리 한 Source File에 여러 번 선언할 수 있다.
일반적인 Source File의 구성은 'package문 - import문 - Class 선언'의 순서로 되어 있다.
import 패키지명.클래스명;
또는
import 패키지명.*;
Keyword import와 Package 이름을 생략하고자 하는 Class의 이름을 Package 이름과 함께 써주면 된다.
같은 Package에서 여러 개의 Class가 사용될 때,
import문을 여러 번 사용하는 대신 '패키지명.*'을 이용해서
지정된 Package에 속하는 모든 Class를 Package명 없이 사용할 수 있다.
하지만, import하는 Package의 수가 많을 때는
어느 Class가 어느 Package에 속하는지 구별하기 어렵다는 단점이 있다.
한 가지 더 알아두어야 할 것은 import문에서
Class의 이름 대신 '*'을 사용하는 것이 Sub Package의 Class까지 포함하는 것은 아니라는 것이다.
1 2 | import java.util.*; import java.text.*; | cs |
그래서, 위의 두 문장 대신 다음과 같이 할 수는 없다.
1 | import java.*; | cs |
import문으로 Package를 지정하지 않으면
'Unnamed Package'에 속한 Class를 제외한 모든 Class 이름 앞에 Package명을 반드시 붙여야 한다.
System과 String 같은 java.lang의 Class들을 import 하지 않고 사용할 수 있었던 이유는
Java를 개발을 하면서 가장 많이 사용된 Class들이 lang에 있는 점도 있기 때문에
모든 Source File에는 묵시적으로 다음과 같은 import문이 선언되어 있다.
import java.lang.*;
(src.zip은 API들을 모아둔 java파일이고, rt.jar은 API들을 모아둔 Bytecode다.)
'Java > Theory' 카테고리의 다른 글
[Java/Theory]11. Reference Type Casting (0) | 2016.05.30 |
---|---|
[Java/Theory]10. API (0) | 2016.05.30 |
[Java/Theory]08. Package (0) | 2016.05.30 |
[Java/Theory]07. 상속 (0) | 2016.05.30 |
[Java/Theory]06. OOP (0) | 2016.05.30 |