작성
·
406
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
답변드리겠습니다.
예, 생성자에서 다른 생성자를 호출하는 것은 가능합니다. 이를 위해서는 this
키워드를 사용하면 됩니다. 예시 코드에서는 constructor(name: String)
생성자에서 this.name
을 통해 User
클래스의 name
속성을 참조하고 있습니다. 따라서 this.name
은 객체 생성 시 전달된 값이 아닌, User
클래스의 기본값인 “동남”을 출력하게 됩니다.
따라서 아래처럼 코드를 작성하면 됩니다.
class User {
var name = "동남"
constructor(name: String) {
println("constructor : $name")
println("생성자에서 다른 생성자를 호출 : ${this.name}")
}
}
fun main() {
var user = User("동검")
}
결과는 다음과 같이 출력될 것입니다.
constructor : 동검
생성자에서 다른 생성자를 호출 : 동남
추가적으로, 생성자에서 다른 생성자를 호출하는 경우 주의할 점은 생성자 체이닝을 고려해야 한다는 점입니다. 생성자 체이닝은 생성자 간의 연속적인 호출을 의미하며, 자바와 마찬가지로 코틀린에서도 this()
를 통해 다른 생성자를 호출할 수 있습니다. 하지만 생성자 체이닝을 사용할 때는 반드시 주의해야 하며, 무한루프에 빠지지 않도록 조심해야 합니다.
그리고, 만약 생성자 호출 과정에서 다른 작업을 수행해야 할 경우, 초기화 블록(init block)을 사용하는 것이 더 좋은 방법일 수 있습니다. 초기화 블록은 객체를 초기화하기 전에 추가 작업을 수행하는 코드 블록입니다. 이를 통해 생성자 호출 과정에서 다른 작업을 수행할 수 있습니다.
다른 질문이 있으시면 언제든지 물어보세요!