Menu
Coddy logo textTech

파일 다루기

Coddy Kotlin 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 57개 중 1번째.

실제 프로그램은 여러 파일로 나뉩니다. Kotlin 프로그램의 모든 .kt 파일은 함께 컴파일되므로, 한 파일에 선언된 함수나 클래스는 import 없이 같은 패키지의 다른 파일 어디에서든 사용할 수 있습니다:

// Greeting.kt
fun greeting(name: String) = "Hello, $name!"

// Main.kt
fun main() {
    println(greeting("Ada"))
}

이 프로그램을 실행하면 Hello, Ada!가 출력됩니다. Main.kt의 main은 Greeting.kt에 있는 함수를 호출합니다.

Kotlin 파일에는 선언만 포함됩니다. 클래스, 함수, 프로퍼티가 이에 해당합니다. println(...)과 같은 문장은 함수 내부에 있어야 합니다. 프로그램은 관례상 Main.kt에 위치하는 fun main()에서 시작합니다:

// Greeting.kt
fun greeting(name: String) = "Hello, $name!"
// println("hi")            // error: 문은 함수 안에 있어야 합니다

// Main.kt
fun main() {
    val name = readLine() ?: "friend"
    println(greeting(name))
}

일반적인 레이아웃은 클래스 이름을 따서 파일마다 하나의 클래스를 두는 것입니다. Dog.kt에는 Dog가 들어 있고, Account.kt에는 Account가 들어 있습니다. 이 섹션의 과제에서는 코드를 해당 파일에 작성하고, Main.kt에는 제공된 입력/출력 코드가 들어 있으며, 이 코드는 일반적으로 수정할 수 없습니다. 편집기에는 각 파일이 탭으로 표시됩니다.

Dog.kt        // class Dog(...) { ... }
Account.kt    // class Account { ... }
Main.kt       // fun main(): 입력을 읽고 결과를 출력합니다

가시성은 파일에도 적용됩니다. private로 표시된 최상위 선언은 자체 파일 내부에서만 표시되는 반면, 기본값인 public은 모든 파일에서 표시되도록 합니다:

// Secret.kt
private const val SALT = "x7"        // 이 파일만 볼 수 있습니다
fun hashed(s: String) = s + SALT

// Main.kt
fun main() {
    println(hashed("pw"))            // 괜찮음: hashed는 public입니다
    // println(SALT)                 // 오류: SALT는 Secret.kt에서 private입니다
}
challenge icon

챌린지

쉬움

프로그램은 두 개의 파일로 구성됩니다. Main.kt의 main은 이름을 읽고 greeting(name)의 결과를 출력합니다. Greeting.kt에서 greeting을 완성하여, 이름이 Ada일 때 Hello, Ada!를 반환하고 이름이 비어 있을 때 Hello, friend!를 반환하도록 하세요.

코드는 Greeting.kt에 작성합니다. Main.kt에는 제공된 입력/출력 코드가 들어 있으며 편집할 수 없습니다.

직접 해보기

fun main() {
    // 제공된 입력/출력 코드: 그대로 유지하세요
    val input = generateSequence(::readLine).toList()
    for (name in input) println(greeting(name))
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

객체 지향 프로그래밍의 모든 레슨

직접 연습해 보세요: Kotlin 플레이그라운드