• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

생성자에서 다른생성자를 호출하는 this 의 예

23.08.05 16:11 작성 조회수 278

0

아래처럼 해도 될는지 모르겠습니다

class User {

var name = "동남"

constructor(name: String) {

println("constructor : $name") // constructor : 동검

println("생성자에서 다른 생성자를 호출 : ${this.name}") // 생성자에서 다른 생성자를 호출 : 동남

}

}

fun main() {

var user = User("동검")

}

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.08.07

안녕하세요, 인프런 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)을 사용하는 것이 더 좋은 방법일 수 있습니다. 초기화 블록은 객체를 초기화하기 전에 추가 작업을 수행하는 코드 블록입니다. 이를 통해 생성자 호출 과정에서 다른 작업을 수행할 수 있습니다.

다른 질문이 있으시면 언제든지 물어보세요!