minstudio

6. 클래스와 인스턴스 (Classes)

코틀린은 클래스 선언과 동시에 주 생성자(Primary Constructor)를 정의하여 코드를 획기적으로 줄여줍니다.

클래스 이름 옆에 val이나 var를 붙여 파라미터를 적으면, 내부 필드 선언과 생성자 할당을 한 번에 끝낼 수 있습니다. 자바의 지루한 Getter/Setter도 내부적으로 자동 생성됩니다.

// 주 생성자를 이용한 초간단 클래스 선언
// 클래스 이름 옆의 괄호가 주 생성자 역할을 하며, val/var를 붙이면 프로퍼티(필드+getter)가 됩니다.
class Person(val name: String, var age: Int) {
    // 인스턴스가 생성될 때 즉시 실행되는 초기화 블록
    init {
        println("새로운 사람(${name})이 생성되었습니다.")
    }

    // 멤버 함수
    fun introduce() {
        println("제 이름은 $name 이고 나이는 $age 입니다.")
    }
}

fun main() {
    // 코틀린에서는 객체 생성 시 new 키워드를 쓰지 않습니다!
    val p1 = Person("Alice", 25)
    
    p1.introduce()
    
    // Getter/Setter 호출 대신, 마침표(.)로 직접 프로퍼티에 접근/수정합니다. (내부적으론 메서드 호출)
    println("이름 읽기: " + p1.name)
    p1.age = 26 // Setter 동작
    println("나이 증가: " + p1.age)
}
6. 클래스와 인스턴스 (Classes) | Minstudio