ch7-15 import문
import문을 사용하면 package 이름을 생략할 수 있다. Date는 첫 글자가 대문자이기 때문에 class 이름이다. 예제의 package는 java.util이고 Date는 class이다. 원래는 클래스 앞에 package까지 적어줘야 하지만 import문을 사용하면 컴파일러가 Date class를 만났을 때 이 클래스가 java.util 폴더에 있는 걸 알게 된다.
이클립스에 단축키 'Ctrl+shift+o'를 사용해서 import 자동 추가할 수 있다. 같은 class 이름이 있다면 선택지를 준다.
핵심 클래스는 java.lang에 넣어둬서 import 하지 않고 사용할 수 있다. '*'는 package 안에 있는 모든 클래스를 의미한다. 컴파일러가 클래스를 만났는데 찾지 못하면 java.lang을 싹 다 뒤진다. 원래는 String, System class도import 해야 하지만, 사용할 때마다 추가할 수 없어서 생략할 수 있게 만들었다.
클래스명 대신에 '*'을 쓰면 package에 있는 모든 클래스를 사용할 수 있다. 이클립스는 "Ctrl+shift+o" 하면 자동으로 import문이 추가된다.
⭐ pakcage 선언 -> import문 -> class 선언 순으로 와야한다.
왼쪽, 오른쪽 프로그램 성능으로는 차이 없다. import는 컴파일러에 알려주는 것으로, 컴파일되고 나면 상관없다. '*' 사용하면 컴파일할 때 살짝 느려질 순 있지만 큰 차이 없다. 왼쪽은 사용하는 class만 적기 때문에 보기 좋고 어떤 것을 사용하는지 알기 쉽다. 편한 쪽을 사용하자. 참고로 오른쪽은 개발할 때 많이 사용하고, 왼쪽은 libaray나 API를 만들 때 자주 사용한다.
java.util, java.text package 둘 다 java 폴더에 있으므로 오른쪽과 같이 쓸 수 있지 않을까 하는 생각이 들 수 있다. 하지만 둘은 전혀 다르다. 오른쪽은 java 패키지의 모든 클래스를 의미하고 package는 포함되지 않는다.
Date class 이름은 같은데 package가 다르다. Date가 어떤 package인지 모르므로 Date 앞에 꼭 패키지명을 붙여야 한다.
static import문을 사용하면 Math.random( )에서 Math를 생략할 수 있다. System·out에서 out은 static 변수이다. (15장에서 배움) '*' 는 모든 static 멤버(static 변수, static 메서드)를 의미한다. Integer에 있는 static 멤버를 사용할 때 생략할 수 있게 만든다. Integer.xxx 사용하는 것을 Integer 생략할 수 있다.
Math 클래스의 모든 static 멤버를 Math class 이름 없이 사용할 수 있게 한다. Math.random( )을 random( )으로 사용할 수 있다. out.println( )도 마찬가지인가. 나중에 클래스 이름 많이 쓰면 코드 지저분해져서 추가되었다. 클래스 이름이 명확지 않으면 헷갈릴 수 있어 필요할 때만 사용한다.
'자바 > 자바의 정석 Ch.7 객체지향 프로그래밍 II' 카테고리의 다른 글
ch7-21 접근제어자 (0) | 2023.04.18 |
---|---|
ch7-17~20 제어자, static, final, abstract (0) | 2023.04.17 |
ch7-12~14 패키지, 클래스 패스 (1) | 2023.04.16 |
ch7-10,11 참조변수 super, 생성자 super() (0) | 2023.04.15 |
ch7-7~9 오버라이딩(overriding) (0) | 2023.04.13 |