파게로그

[Basic] package 본문

콤퓨타 왕기초/Kotlin

[Basic] package

파게 2021. 6. 15. 03:29

package declaration

소스 파일은 패키지 선언으로 시작한다.

package org.example

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

// ...

클래스나 함수와 같은, 소스 파일의 모든 내용들은 패키지에 포함된다. 따라서 위의 예시에서는, printMessage()의 풀네임은 org.example.printMessage인 것이며, Message의 풀네임은 org.example.Message인 것이다.

 

Java였다면 위 프로그램은 실행이 불가능하다. 하지만 Kotlin에서는 패키지 지시 내용이 파일 위치와 일치하지 않는다는 경고가 뜨기는 하지만, 그럼에도 위 프로그램은 성공적으로 실행된다. 오히려, 어떤 .kt 파일이 패키지 내에 포함되어 있다고 하더라도, 패키지 선언을 하지 않는다면 해당 파일의 내용은 모두 default 패키지에 속하게 된다.

 

default imports

아래의 패키지는 기본적으로 모든 Kotlin 파일에 import된다.

  • kotlin.*
  • kotlin.annotation.*
  • kotlin.collections.*
  • kotlin.comparisons.*
  • kotlin.io.*
  • kotlin.ranges.*
  • kotlin.sequences.*
  • kotlin.text.*

 

일부 패키지는 목표 플랫폼에 따라 추가적으로 import된다.

 

JVM

  • java.lang.*
  • kotlin.jvm.*

 

JS

  • kotlin.js.*

 

Imports

default imports와 별개로, 각각의 파일은 고유의 import directives를 포함한다.

 

단일 명칭으로 import할 수 있다.

import org.example.Message

 

패키지, 클래스, 객체 등, 범위에서 접근 가능한 모든 내용을 import할 수 있다.

import org.example.*

 

이름 충돌이 있다면 as를 사용하여 충돌이 발생하는 개체에 대해서 다른 이름을 부여할 수 있다.

import org.example.Message // Message is accessible
import org.test.Message as testMessage // testMessage stands for 'org.test.Message'

 

import 키워드는 클래스를 import하는 것에 한정되지 않는다. 이를 통해 다음의 선언들을 import할 수도 있다.

  • top-level functions and properties
  • functions and properties declared in object declarations
  • enum constants

 

Visibility of top-level declarations

top-level declaration이 private로 표지되어 있으면, 이는 그것이 선언된 파일 내부로 private하다.

'콤퓨타 왕기초 > Kotlin' 카테고리의 다른 글

[OOP] 연산자 오버로딩  (0) 2021.06.13
[OOP] Extension Function  (0) 2021.06.13
[OOP] Object, singleton pattern  (0) 2021.06.13
[OOP] Sealed Classes  (0) 2021.06.13
[OOP] Data Class  (0) 2021.06.13
Comments