본문 바로가기

Language/Kotlin

[Kotlin] 클래스의 생성자

728x90
반응형

생성자: 새로운 인스턴스를 만들기 위해 호출하는 특수한 함수

생성자의 기능? 인스턴스의 속성을 초기화, 인스턴스 생성 시 구문을 수행(init 함수를 통해)

기본 생성자(init 함수)

: 파라미터나 반환형이 없는 특수한 함수. 생성자를 통해 인스턴스가 만들어질 때 호출

fun main() {
    var a = Person("박보영", 1990)  // 1990년생 박보영님이 생성되었습니다.
    var b = Person("전정국", 1997)  // 1997년생 전정국님이 생성되었습니다.
    var c = Person("장원영", 2004)  // 2004년생 장원영님이 생성되었습니다.
}

class Person (var name:String, var birthYear:Int) {
    init {
        println("${this.birthYear}년생 ${this.name}님이 생성되었습니다.")
    }
}
  • this - 인스턴스 자신의 속성이나 함수를 호출하기 위해 클래스 내부에서 사용되는 키워드

보조 생성자(constructor 함수)

: 필요에 따라 추가적으로 선언

보조 생성자가 기본 생성자를 호출하도록 하려면 콜론(:)을 붙인 후 this라는 키워드를 사용하고 기본 생성자가 필요로 하는 패러미터를 괄호 안에 넣어주면 된다.

fun main() {
    var a = Person("박보영", 1990)  // 1990년생 박보영님이 생성되었습니다.
    var b = Person("전정국", 1997)  // 1997년생 전정국님이 생성되었습니다.
    var c = Person("장원영", 2004)  // 2004년생 장원영님이 생성되었습니다.

    var d = Person("이루다")  // 1997년생 이루다님이 생성되었습니다.
                           // 보조 생성자가 사용되었습니다.
    var e = Person("차은우")  // 1997년생 차은우님이 생성되었습니다.
                           // 보조 생성자가 사용되었습니다.
    var f = Person("류수정")  // 1997년생 류수정님이 생성되었습니다.
                           // 보조 생성자가 사용되었습니다.
}

class Person (var name:String, var birthYear:Int) {
    init {
        println("${this.birthYear}년생 ${this.name}님이 생성되었습니다.")
    }

    constructor(name:String) : this(name, 1997) {  // 이름은 받은 그대로 넘겨주고 년도는 1997년으로 고정하여 초기화
        println("보조 생성자가 사용되었습니다.")
    }
}
728x90
반응형