본문 바로가기

Kotlin

공식 문서로 배우는 코틀린 - 12. Packages and imports

열두 번째, 패키지와 임포트입니다.

 

소스 파일은 패키지 선언으로 시작할 수 있습니다.

package org.example

fun printMessage() { /*...*/ }
class Message { /*...*/ }

// ...

 

소스 파일 안의 클래스, 함수 같은 모든 내용은 상단에 선언된 패키지에 포함됩니다. 그러므로, 상단의 코드에서 printMessage()의 전체 이름은  org.example.printMessage이고 Message의 전체 이름은 org.example.Message입니다.

 

패키지가 선언되지 않으면, 해당 파일의 내용은 이름이 없는 기본(default) 패키지에 속하게 됩니다.

import
잘 아시는 것처럼 수입하다라는 뜻을 가진 단어입니다. 하지만, 수입 또는 가져옴이라는 식으로 말하는 경우는 거의 접해본 적이 없기 때문에 영어 그대로 임포트라고 표기하겠습니다.
Java나 Kotlin에서는 자신의 파일에 속하지 않는 대상을 사용(참조)할 때, com.example.Message 처럼 전체 이름을 사용하거나 대상을 import com.example.Mesaage 식으로 임포트하여 단순하게 Message 식으로 사용할 수 있습니다.
특별한 경우가 아니면, 대부분 원하는 대상을 임포트 하여 (단순히) 이름만으로 사용(참조)하게 됩니다. 정확한 정의가 궁금하신 분은 자바 언어 명세에서 해당 내용을 확인해 보실 수 있습니다.

기본 임포트

모든 코틀린 파일에는 다음과 같은 다수의 패키지가 기본적으로 임포트됩니다.

대상 플랫폼에 따라 부가적으로 다음과 같은 패키지들이 기본적으로 임포트됩니다.

임포트

기본 임포트와 별개로 각각의 파일은 자신만의 임포트(import 디렉티브)를 가질 수 있습니다.

다음과 같이 단일 이름에 대한 임포트를 하거나,

import org.example.Message // 이제 메시지는 전체 이름을 사용하지 않아도 접근 가능합니다.

 

특정 범위(scope)의 모든 접근 가능한 내용(패키지, 클래스, 객체 등등)을 임포트 할 수 있습니다.

import org.example.* // 'org.example' 안의 모든 것에 접근 가능하게 합니다.

 

이름이 충돌하는 경우 as 키워드를 사용하여 충돌하는 대상에 지역적으로 다른 이름을 줄 수 있습니다.

import org.example.Message // Message 접근 가능
import org.test.Message as TestMessage // 'org.test.Message'를 TestMessage로 이름 변경

 

import 키워드는 클래스만 임포트 하는데 국한되지 않습니다. 다음과 같은 다른 선언들도 임포트 할 수 있습니다.

 

최상위 수준 선언의 가시성

private으로 지정한 최상위 수준의 선언은 해당 선언이 포함된 파일 내에서만 사용 가능합니다(참조: 가시성 수정자).