JAVA/객체지향프로그래밍2

[JAVA] import문

prize1209 2021. 7. 7. 01:26

import문

- 사용할 클래스가 속한 패키지를 지정하는데 사용

import문을 사용하면 클래스를 사용할 때 패키지명을 생략할 수 있다.

 

 

ctrl+shift+o 자동으로 import문 만들어짐

 

java.lang패키지의 클래스는 import하지 않고도 사용할 수 있다. (생략 가능)

 

일반적인 소스파일(*.java)의 구성

1.package문

2.import문

3.클래스 선언 

 

 

 

import 패키지명.클래스명;

또는

import 패키지명.*;       이 패키지에 속한 모든 클래스 

 

import문은 패키지문과 클래스선언의 사이에 선언한다.

 

 

 

같은 패키지에서 여러 개의 클래스가 사용될 때, import문을 여러 번 사용하는대신 '패키지명.*'을 이용해서 지정된 패키지에 속하는 모든 클래스를 패키지명 없이 사용할 수 있다.

 

 

 

 

- import문은 컴파일 시에 처리되므로 프로그램의 성능에 아무런 영향을 미치지 않는다.

 

 

- 다음의 두 코드는 서로 의미가 다르다

*; 의 의미 : 모든 클래스 

 

import java.*;  java 패키지의 모든 클래스를 의미(패키지는 포함 안됨)

 

 

java.util 패키지와 java.text 패키지를 모두 import 하고 싶다 vs.  java 패키지의 모든 클래스를 의미. 패키지는 포함안됨

 

 

- 이름이 같은 클래스가 속한 두 패키지를 import할 때는 클래스 앞에 패키지명을 붙여줘야 한다.

 

 

클래스 이름이 Date로 동일하고, 패키지가 다른 경우 , Date 클래스가 sql 패키지인지 util 패키지인지 알 수 없다 -> 그럴 때 클래스 앞에 패키지 이름을 직접 적어준다. 

 

 

 

예10)

import java.text.SimpleDateFormat;
import java.util.Date;

public class ImportTest {
	public static void main(String[] args) {
		Date today = new Date();

		SimpleDateFormat date = new SimpleDateFormat("yyyy/MM/dd");
		SimpleDateFormat time = new SimpleDateFormat("hh:mm:ss a");

		System.out.println("오늘 날짜는" + date.format(today));
		System.out.println("현재 시간은" + time.format(today));

	}
}

simpleDateFormat 과 Date 클래스는 다른 패키지에 속한 클래스이므로 import문으로 어느 패키지에 속하는 클래스인지 명시해주었다. 그래서 소스에서 클래스 이름 앞에 패키지명을 생략할 수 있었다. 

만일 import문을 지정하지 않았다면 클래스이름에 패키지명도 적어줘야했다. 

 

import java.text.SimpleDateFormat;
import java.util.Date;

public class ImportTest {
	public static void main(String[] args) {
		java.util.Date today = new java.util.Date();

		java.text.SimpleDateFormat date = new java.text.SimpleDateFormat("yyyy/MM/dd");
		java.text.SimpleDateFormat time = new java.text.SimpleDateFormat("hh:mm:ss a");

		System.out.println("오늘 날짜는" + date.format(today));
		System.out.println("현재 시간은" + time.format(today));

	}
}

 

import문으로 패키지를 지정하지 않으면 모든 클래스이름 앞에 패키지명을 반드시 붙여야한다. 

단, 같은 패키지 내 클래스들은 import문을 지정하지 않고도 패키지명을 생략할 수 있다. 

 

지금까지 System과 String 같은 java.lang 패키지의 클래스들을 패키지명없이 사용할  수 있었던 이유는 모든 소스파일에는 묵시적으로 다음과 같은 import문이 선언되어 있기 때문이다. 

 

import java.lang.*;

 

 

 

static import문

 

static 멤버를 사용할 때 클래스 이름을 생략할 수 있게 해준다. 

1) Integer 클래스에 있는 모든 static 멤버(static 변수, static 메서드)

2) 원래는 Math.random인데 import 문에 써놓으면 클래스 이름이 생략이 가능하다. 

 

 

예11)

import static java.lang.System.out;
import static java.lang.Math.*;

public class StaticImportEx1 {
	public static void main(String[] args) {
		// System.out.println(Math.random());
		out.println(random());
		// System.out.println("Math.PI:"+Math.PI);
		out.println("Math.PI:" + PI);
	}
}

 

'JAVA > 객체지향프로그래밍2' 카테고리의 다른 글

[JAVA] 제어자(modifier)  (0) 2021.07.07
[JAVA] super, super()  (0) 2021.06.28
[JAVA] Object클래스  (0) 2021.06.24
[JAVA] 단일 상속(single inheritance)  (0) 2021.06.24
[JAVA]포함(composite)  (0) 2021.06.24