Menu
CoddyTech

클래스 정의하기

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

클래스는 객체의 종류를 설명합니다. 즉, 객체가 보유하는 데이터와 할 수 있는 작업을 설명합니다. class Dog { ... }는 타입을 선언하고, Dog()는 해당 타입의 객체인 인스턴스를 생성합니다. Kotlin에는 new 키워드가 없습니다:

class Dog {
    var name = "Rex"
    var age = 3
}

main 내부에서:

val dog = Dog()
println(dog.name)
println(dog.age)

출력:

Rex
3

클래스 안에 있는 변수는 속성입니다. 각 인스턴스는 고유한 복사본을 가지며, 점 표기법으로 읽고 변경합니다:

class Dog {
    var name = "Rex"
}

main 안에서:

val first = Dog()
val second = Dog()
second.name = "Bella"
println(first.name)
println(second.name)

출력:

Rex
Bella

클래스 내부의 함수는 메서드입니다(Kotlin에서는 멤버 함수라고 부릅니다). 메서드는 자신이 호출된 인스턴스의 속성을 읽고 변경할 수 있습니다:

class Counter {
    var count = 0

    fun increment() {
        count++
    }

    fun report() = "count is $count"
}

main 내부에서:

val clicks = Counter()
clicks.increment()
clicks.increment()
println(clicks.report())

출력:

count is 2

클래스 이름에는 UpperCamelCase(BankAccount)를 사용하고, 속성과 메서드에는 lowerCamelCase(balance, deposit())를 사용합니다. 데이터를 그 데이터에 작용하는 함수와 함께 묶는 것이 객체 지향 프로그래밍의 핵심 아이디어입니다. Counter를 사용하는 코드는 increment()를 호출하며, 카운트가 어떻게 저장되는지 알 필요가 없습니다.

class BankAccount {
    var balance = 0

    fun deposit(amount: Int) {
        balance += amount
    }
}
challenge icon

챌린지

쉬움

Pet 클래스의 describe() 메서드를 완성하세요. 이 메서드는 속성을 바탕으로 한 문장을 반환합니다. 이름이 Rex이고 종이 dog이며 나이가 3인 반려동물은 Rex is a 3 year old dog을 반환합니다.

제공된 코드는 Pet을 생성하고, 입력값(이름, 종, 나이)으로 속성을 설정한 다음 describe()의 결과를 출력합니다.

코드는 Pet.kt에 작성하세요. Main.kt에는 제공된 입력/출력 코드가 있으며 수정할 수 없습니다.

직접 해보기

fun main() {
    // 제공된 입출력 코드: 그대로 유지하세요
    val input = generateSequence(::readLine).toList()
    val pet = Pet()
    pet.name = input[0]
    pet.species = input[1]
    pet.age = input[2].toInt()
    println(pet.describe())
}
quiz icon실력 점검

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

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

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