최신판 |
당신의 편집 |
1번째 줄: |
1번째 줄: |
− | '''임포트'''(import)는 [[객체 지향 프로그래밍]](OOP)에서 사용할 [[클래스]]가 속한 [[패키지]](=폴더)를 지정하기 위해 사용하는 명령어이다. Import 문을 사용하면, 클래스를 사용할 때 길고 복잡한 패키지명(=폴더명)을 생략할 수 있어서 편리하다. Import 문은 컴파일 시에 처리되므로 프로그램의 성능에 아무런 영향을 미치지 않는다. | + | '''임포트'''는 [[객체 지향 프로그래밍]](OOP)에서 사용할 [[클래스]]가 속한 [[패키지]](=폴더)를 지정하기 위해 사용하는 명령어이다. Import 문을 사용하면, 클래스를 사용할 때 길고 복잡한 패키지명(=폴더명)을 생략할 수 있어서 편리하다. Import 문은 컴파일 시에 처리되므로 프로그램의 성능에 아무런 영향을 미치지 않는다. |
| | | |
| == 개요 == | | == 개요 == |
− | "가져오기(import)"는 다른 응용프로그램에 의해 생산된 데이터를 사용하는 것이다. 외부 데이터를 가져와서 사용하는 것은 소프트웨어의 매우 중요한 기능인데, 그 이유는 한 응용프로그램이 다른 것들을 보충할 수 있다는 것을 의미하기 때문이다. 예를 들면, 많은 프로그램들이 다양한 형식의 그래픽 이미지를 가져다 쓸 수 있도록 설계되어 있다.
| |
− |
| |
− | package 패키지이름;
| |
− |
| |
− | 자바에서 패키지를 선언하는 방법은 다음과 같다.
| |
− | 위와 같이 선언한 패키지에 속한 클래스를 다른 파일에서 사용하기 위해서는 클래스 이름 앞에 패키지의 경로까지 포함한 풀 네임을 명시해 사용해야 한다.
| |
− | 하지만 클래스를 사용할 때마다 매번 이렇게 긴 이름을 사용하는 것은 비효율적이므로, 자바에서는 import 키워드를 별도로 제공하고 있다.
| |
− |
| |
− | import 문은 자바 컴파일러에 코드에서 사용할 클래스의 패키지에 대한 정보를 미리 제공하는 역할을 한다.
| |
− |
| |
− | 따라서 import 문을 사용하면 다른 패키지에 속한 클래스를 패키지 이름을 제외한 클래스 이름만으로 사용할 수 있게 된다.<ref name="패키지"><[http://tcpschool.com/java/java_usingClass_package 패키지]><<TCPSCHOOL>></ref>
| |
| | | |
| == 특징 == | | == 특징 == |
− | === import문의 선언 ===
| |
− | * 모든 소스파일에서 import문은 package문 다음, 클래스 선언문 이전에 위치해야 한다.
| |
− | * import문을 선언하는 방법으로는 import 패키지명.클래스명; 또는 import 패키지명.*; 두 가지 방법이 있다.
| |
− | * 여기서 import 패키지명.*; 이 방법은 같은 패키지에서 여러 개의 클래스가 사용될 때 import문을 여러 번 사용하는 번거로움을 덜어준다. 즉, 지정된 패키지에 속하는 모든 클래스를 패키지명 없이 사용할 수 있다.
| |
− | * import하는 캐피지의 수가 많을 때는 어느 클래스가 어느 패키지에 속하는지 구별하기 어려워지는 단점이 있기 때문에 적당히 사용하는 것이 좋다.<ref name="import"><[https://hyeon424.tistory.com/entry/Java-import-%EC%84%A0%EC%96%B8%EC%9D%98-%EC%9D%B4%EC%A0%90 import 선언]><<hyeon424>>, 2019-08-21</ref>
| |
− |
| |
− | === import 선언의 이점 ===
| |
− | * 보통 클래스나 인터페이스 등은 어떠한 특정 패키지에 속해 있다.
| |
− | * 그렇다면 처음 코딩을 배울 때 주로 사용하는 클래스인 Scanner, Random 또한 어떠한 특정 패키지에 속해 있다는 얘기인데 이 두 클래스는 java.util 패키지에 속해 있다.
| |
− | * 즉, Scanner 클래스의 정확한 이름은 java.util.Scanner 이다.
| |
− | * 그러나 코드를 작성할 때 위와 같은 명명을 줄이게끔 하기 위해 import를 선언하는 것이다.
| |
− | * 따라서 패키지 이름을 포함한 클래스의 이름이 아닌 클래스 그 이름 자체만으로 클래스를 사용할 수 있게끔 해주는 것은 import 선언 덕분이다.<ref name="import"/>
| |
− |
| |
− | === import 문의 특징 ===
| |
− | import 문을 선언할 때 별표(*)를 사용하는 것이 해당 패키지에 포함된 다른 모든 하위 패키지의 클래스까지 포함해 주는 것은 아니다.
| |
| | | |
− | import java.awt.*;
| + | == 활용 == |
− | import java.util.*;
| |
− | | |
− | 즉, 위와 같은 두 개의 import 문을 아래와 같이 하나의 import 문으로 표현할 수는 없다.
| |
− | | |
− | import java.*;
| |
− | | |
− | 또한, 자바에서는 가장 많이 사용하는 java.lang 패키지에 대해서는 import 문을 사용하지 않아도 클래스 이름만으로 사용할 수 있도록 해주고 있다.<ref name="패키지"/>
| |
| | | |
| {{각주}} | | {{각주}} |
| | | |
| == 참고자료 == | | == 참고자료 == |
− | * <[http://tcpschool.com/java/java_usingClass_package 패키지]><<TCPSCHOOL>>
| |
− | * <[https://hyeon424.tistory.com/entry/Java-import-%EC%84%A0%EC%96%B8%EC%9D%98-%EC%9D%B4%EC%A0%90 import선언]><<hyeon424>>, 2019-08-21
| |
− |
| |
− | == 같이 보기 ==
| |
− | * [[객체지향 프로그래밍]]
| |
− | * [[메소드]]
| |
− | * [[추상클래스]]
| |
− | * [[접근제어자]]
| |
− | * [[패키지]]
| |
− | * [[프로텍티드]]
| |
− | * [[인클루드]]
| |
| | | |
− | {{프로그래밍|검토 필요}}
| + | == 같이보기 == |