병훈's Blog

[Java] package와 import 본문

Java

[Java] package와 import

thdqudgns 2022. 9. 28. 03:04

패키지 (package)

오늘은 쉬운 내용이에요.

 

우리가 컴퓨터의 파일들을 관리할 때
폴더구조를 사용하잖아요?

 

Java에서도 클래스들을 관리할 때
패키지를 사용해요

--

패키지는

  • 서로 관련된 class와 interface의 묶음
  • 물리적으로 폴더이다
  • 서브패키지를 가질 수 있으며, 점( . )으로 구분한다

그리고 클래스는 패키지 안에 속해있기 때문에
클래스의 Full name은 패키지명을 포함하여 경로를 명시해줘요.
클래스를 사용할 때 원래 패키지명까지 다 적어줘야 하죠

근데 그동안 클래스명만 적었어요.
어떻게 그래왔던 걸까요?

소스코드의 첫번째 줄에

package com.java.book;

이렇게 패키지의 위치를 선언하면
같은 패키지에 속한 클래스들의 Full name을 적을 필요가 없어요.

 

엇?! 그럼 다른 패키지에 속한 클래스를 사용하려면
클래스명을 다 적어줘야 할까요?

 

String 클래스를 사용하려면
java.lang.String 을 다 적어줘야 하나요?

 

아니요. 지금까지 안 그랬죠.
어떻게 그럴 수 있었을까요?

 

Java는 많이 쓰이는 java.lang 패키지를
기본으로 import 해주기 때문이에요

그럼 java.lang 패키지에 속하지 않은 클래스들은
클래스명을 다 적어줘야 할까요?

네. 다른 클래스들이 속한 패키지는
자동으로 import 해주지 않기 때문에
원래는 다 적어줘야 해요.

 

하지만 수동으로 import문을 적어준다면
Full name을 적을 필요가 없어요.

 

이제 import에 대해 알아볼까요.


import

import를 번역하면 이런 뜻이에요

import : 수입하다 (= 가져오는 느낌)

그리고 import 키워드는 이렇게 사용합니다.

import java.util.*

* 은 java.util 패키지 안의 모든 클래스를 의미해요.
하지만 모든 클래스를 의미한다고 성능이 느려지진 않아요.

 

그저 컴파일 시에 낯선 클래스가 보일 때 import 되었는지 확인하는 것이기에
클래스들을 가져오는 게 아니라 클래스의 위치만 확인하는 용도에요.

 

이렇게 패키지를 import 해놓으면 클래스를 사용할 때
클래스명만 작성하면 돼요. 간단하죠.

 

그리고 static import도 있어요.
이건 클래스명까지 생략하게 만들어요.
그래서 메소드명을 바로 적을 수 있게 돼요.

 

마지막 주의사항입니다.
이름이 같은 클래스가 속한 두 패키지를 import할 때에는
Full name을 적어줘야 합니다.
그렇지 않으면 이름이 같은 클래스인데,
어떤 패키지의 클래스를 사용하는 지 알 수 없을테니까요.

앞으로 package를 import하여 클래스 이름을 간단하게 적자구요!!


감사합니다.
오늘도 고생하셨어요.

728x90
728x90

'Java' 카테고리의 다른 글

[Java] 다형성1 (Polymorphism)  (0) 2022.09.28
[Java] 제어자 (Modifiers)  (0) 2022.09.28
[Java] super  (0) 2022.09.27
[Java] 오버라이딩 (Overriding)  (0) 2022.09.26
[Java] 상속 (Inheritance)  (0) 2022.09.26