본문 바로가기
Java/Java

임포트(import)란?

by 박채니 2022. 2. 25.

안녕하세요, 코린이의 코딩 학습기 채니 입니다.

 

개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.


메인 메소드를 포함하고 있는 Foo 클래스를 만들고 객체 생성 및 메소드를 생성하였습니다.

package ce.java.test;

public class Foo {
	public static void main(String[] args) {
		Foo foo = new Foo();
		foo.test1();
	}
	
	public void test1() {
		System.out.println("안녕");
	}
}

동일한 패키지 내에서 Bar 클래스를 만들었습니다.

package ce.java.test;

public class Bar {
	public void test2() {
		System.out.println("Hello");
	}
}

Bar 클래스 내부에 있는 test2 메소드를 호출 하기 위해선 main 메소드가 포함된 Foo 클래스에서 객체 생성 후 호출을 해야합니다.

(클래스로부터 객체를 생성 → 객체를 통하여 → 메소드 호출)

package ce.java.test;

public class Foo {
	public static void main(String[] args) {
		Foo foo = new Foo();
		foo.test1();
		
		Bar bar = new Bar();
		bar.test2();
	}
	
	public void test1() {
		System.out.println("안녕");
	}
}

@콘솔출력값
안녕
Hello

 

그렇다면 만약, 다른 패키지의 클래스를 호출하려면 어떻게 해야할까?

이 때 사용하는 것이 import입니다.


임포트(import)

임포트(import)?

- 다른 패키지 내의 클래스를 사용하기 위한 문법 요소

- 다른 패키지의 클래스를 마치 자신의 패키지 내부에 있는 것처럼 사용하는 것

- * 기호를 사용해 임포트한다면, 하위 폴더는 임포트 되지 않으며, 클래스 파일들만 임포트 됨

       (import ce.java1.test1.A와 import ce.java2.test2.A는 import문으로만으론 사용이 안됨

     → 패키지명 포함 풀네임 사용하거나 import와 혼용하여 사용해야함)

 

우선 ce.java.test.other이라는 다른 패키지의 Other 클래스를 생성해보았습니다.

package ce.java.test.other;

public class Other {
	
	public void test3() {
		System.out.println("다른 패키지 내의 클래스");
	}
}

해당 클래스를 Foo 클래스에서 호출하고 싶다면 동일하게 Other클래스의 객체를 생성하고 해당 메소드를 호출해줍니다.

메소드를 호출하고 실행하려고 하니 Other에 빨간 줄로 Other가 class로 처리 될 수 없다는 에러가 뜬 것을 확인할 수 있었습니다.

→ 다른 패키지의 클래스를 사용하려고 할 때 발생

 

이 때 Import를 사용하여 에러를 해결해줍니다.

import 패키지.클래스명 (ex. ce.java.test.other.Other;)

package ce.java.test;

import ce.java.test.other.Other;

public class Foo {
	public static void main(String[] args) {
		Foo foo = new Foo();
		foo.test1();
		
		Bar bar = new Bar();
		bar.test2();
		
		//다른 패키지 클래스의 메소드
       	 	//다른 패키지의 클래스를 사용하려면 반드시 import문 필요
		Other other = new Other();
		other.test3();
		
	}
	
	public void test1() {
		System.out.println("안녕");
	}
}

@콘솔출력값
안녕
Hello
다른 패키지 내의 클래스

 

그렇다면 import만 사용하면 다른 패키지의 모든 클래스를 사용할 수 있다는 의미가 될 것입니다.

jdk가 제공하는 다른 패키지의 클래스가 수도 없이 많이 있는데, 해당 클래스들을 모두 사용할 수 있게 됩니다.

 

jdk가 제공하고 있는 현재 시각을 출력할 수 있는 클래스를 사용해보겠습니다.java.util 패키지 내의 Date 클래스가 있다는 것을 확인하였습니다. (jdk - https://docs.oracle.com/en/java/javase/11/docs/api/index.html)

 

동일하게 Date 객체를 생성하고 현재 시각을 출력해보겠습니다. java.util 패키지 내의 있는 클래스를 사용하는 것이니 반드시 import가 필요하겠죠?import java.util.Date;로 임포트 해줍니다.

package ce.java.test;

import ce.java.test.other.Other;
import java.util.Date;

public class Foo {
	public static void main(String[] args) {
		Foo foo = new Foo();
		foo.test1();
		
		Bar bar = new Bar();
		bar.test2();
		
		//다른 패키지 클래스의 메소드
		Other other = new Other();
		other.test3();
		
		//jdk가 제공하는 다른 패키지 클래스 사용하기
		//java.util.Date
		Date now = new Date();
		System.out.println(now);
		
	}
	
	public void test1() {
		System.out.println("안녕");
	}
}

@콘솔출력값
안녕
Hello
다른 패키지 내의 클래스
Fri Feb 25 11:52:13 KST 2022

*KST : Korea Standard Time 한국표준시각 

 

에러도 해결되고, 현재 시각에 대한 정보가 잘 출력된 것을 확인할 수 있습니다.

 

 

만약 import 문을 사용하기 싫다면..?

java.util.Date now = new java.util.Date();

로 클래스의 풀네임을 사용하여 import문을 생략할 수도 있습니다. 여기선 반드시! 패키지명을 포함한 풀네임을 사용해야 합니다.

 

만약 패키지 내의 모든 클래스를 임포트하고 싶다면..?

*를 사용하여 import java.util.* 와 같이 표현할 수도 있습니다.