inflearn logo
강의

Course

Instructor

Yoon Jae-seong's Google's official language, Kotlin, for getting started with programming

Lesson 22 this and super

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

504

shafeel2

67 asked

0

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

class User {

var name = "동남"

constructor(name: String) {

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

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

}

}

fun main() {

var user = User("동검")

}

android kotlin

Answer 1

0

communityai8509

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

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

34강 리플렉션강의중에서

0

462

3

sealed class 관련 code 내 when 에서 오류가 발생합니다

0

338

2

t1.getA1()); cannot find symbol method getA1()

0

426

4

IntelliJ IDEA 2023.1.3 (Community Edition) 이

0

447

1

new 모듈 창에서 Kotlin을 선택할 수 있는 옵션이 없습니다.

0

866

3

생성자와 상속에 관해 질문입니다

0

248

1

it

0

157

1

주생성자

0

321

1

형변환

0

237

1

모듈 임포트

0

254

1

Overriding 강의에서 궁금한 게 생겨서 질문드립니다.

0

193

0

Java 함수형 프로그래밍 방식 관련해 궁금한점이 있어 문의드립니다!

0

189

1

안녕하세요

0

203

0

강의 중 언급하시는 '매개체'의 의미가 궁금합니다.

0

258

1

배열 함수 중 .max() 와 .min() 사용 시 오류가 발생됩니다. 해결 방안을 알고 싶습니다.

0

787

1

package 선언 후 println 참조 못함

0

271

1

자바메인에서 가져오는 게 안됩니다.

1

291

2

모듈 임포트가 안돼요.

1

305

2

아이맥에서 자바 다운하고 설치하는 방법도 알려주세요~^^

0

268

2

33강 Sealed 클래스

0

174

1

모듈 사용 등록

0

339

1

인틀리제이 업데이트 관련

0

157

1

안녕하세요 초보자라서 그런지 혼란이옵니다

2

157

1

리플렉션에서 out에 대한 질문

0

198

1