import 는 기존에 이클립스에서 자바 프로젝트를 불러올 때 사용하였다.

이번에 다룰 import는 그와 다른 예약어 import 를 말한다.

 

import의 사전적 뜻은 수입, 수입품 이다. 즉 외부에서 가져온다는 것을 의미한다.

자바에서의 import는 뜻과 같이 다른 패키지의 클래스를 불러오는 것이다.

 

클래스를 만들 때 임포트 되는 것은 기본적으로 동일 패키지 내의 클래스들과 java.lang 패키지이다.

하지만 그 외에 다른 패키지의 클래스에 접근하여 원하는 기능을 가져와야할 경우도 많다.

 

1. import 사용하기

현재까지 가장 많이 임포트한 클래스는 입력받기 위해 사용한 Scanner 이다.

그리고 Scanner를 사용하기 위해 package 하단에서 아래 문장을 볼 수 있었다.

import java.util.Scanner;
 

이 코드의 의미는 " java.util 패키지의 Scanner 를 가져오겠다" 라는 의미이며 실제로 java 폴더를 찾아보면

존재한다는 것을 알 수 있다. C:\Program Files\Java\jdk1.8.0_221 에서 src 압축파일을 살펴보자.

위 처럼 Scanner 가 존재한다는 것을 확인할 수 있다.

 

2. 내가 만든 클래스 import 하기

만약 자신이 만든 클래스를 임포트하고 싶다면 다음과 같이 해주면 된다.

대표사진 삭제

사진 설명을 입력하세요.

좌측의 패키지 익스플로러와 코드를 보면 다른 패키지에서 클래스를 불러온 것을 확인할 수 있다.

만약 클래스를 임포트하지 않는 다면 다음과 같은 일이 발생한다.

에러를 살펴보면 Score를 해결할 수 없다고 뜨며 그 아래에 해결방법으로 import 하라는 것을 볼 수 있다.

 

3. 패키지 내의 모든 클래스를 import 하는 방법

만약 패키지 내에 여러 클래스를 import 한다 하면 각 클래스마다 한 줄씩 import 를 작성하여야 한다.

만약 import 할 패키지가 100개라면 100줄의 import 를 작성해야할까?

 

이 때 * (애스터 리스크) 를 사용하면 패키지 내 모든 클래스를 import 할 수 있다.

위 이미지를 보면 동일한 코드이나 import 부분만 * 로 바뀐 것을 확인할 수 있다.

 

4. static (클래스) 변수 와 static (클래스) 메소드를 import 하는 방법

JDK 5부터는 import static 이 추가되어 static 으로 선언된 클래스 변수 또는 클래스 메소드를 사용할 수 있다.

아래 코드를 보자.

package com.pack;

public class TestClass {
	
	public static String str = "Test";
	public static void testClass_Method() {
		System.out.println("testClass_Method() Call!!");
	}
}
 

com. pack 패키지의 TestClass 를 선언하여 str 과 testClass_Method() 를 static 으로 선언하였다.

package com.pack.sub;

import com.pack.TestClass;

public class UseClass {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		TestClass.testClass_Method();
		System.out.println(TestClass.str);
	}

}
 

TestClass 를 임포트하여 static 으로 선언된 변수와 메소드를 사용하는 것을 확인할 수 있다.

이제 두 번째 코드를 수정하여 import static 을 사용해 보면 다음과 같다.

package com.pack.sub;

import static com.pack.TestClass.str;
import static com.pack.TestClass.testClass_Method;

public class UseClass {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		testClass_Method();
		System.out.println(str);
	}
}
 

차이점은 다음과 같다.

 

import -> import static

com.pack.TestClass -> com.pack.TestClass.str , com.pack.TestClass.testClass_Method

TestClass.testClass_Method() -> TestClass.testClass_Method()

System.out.println(TestClass.str) -> System.out.println(TestClass.str)

 

즉, import static 을 사용하면 다른 패키지의 static 변수, 메소드 이지만 변수명과 메소드명 만으로도

쉽게 사용할 수 있다.

 

만약 일일이 import static 으로 선언하기 귀찮다면 다음과 같이 사용할 수 있다.

 

import static com.pack.TestClass.* ;

package com.pack.sub;

import static com.pack.TestClass.*;   // 애스터 리스크(*) 사용
//import static com.pack.TestClass.testClass_Method;

public class UseClass {
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		testClass_Method();    // 정상적으로 사용 가능
		System.out.println(str);
	}
}
 

참고) 만약 import static 한 클래스 변수와 자신의 클래스 변수의 이름이 같다면?

package com.pack.sub;

import static com.pack.TestClass.str;
import static com.pack.TestClass.testClass_Method;

public class UseClass {

	static String str = "내가 먼저다!";	// 이름이 같은 클래스 변수 생성
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		testClass_Method();
		System.out.println(str);
	}
}
 

실험 결과 자기 클래스의 클래스 변수가 우선 실행된다.

 

'JAVA' 카테고리의 다른 글

생성자  (0) 2022.08.28
배열 / foreach 사용  (0) 2022.08.28
Package  (0) 2022.08.28
MVC 패턴  (0) 2022.08.28
접근 제어자  (0) 2022.08.28

+ Recent posts