inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Bắt đầu lập trình bằng ngôn ngữ chính thức của Google, Kotlin, bởi Jaeseong Yoon

Bài 22 cái này và siêu

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

506

shafeel2

67 câu hỏi đã được viết

0

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

class User {

var name = "동남"

constructor(name: String) {

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

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

}

}

fun main() {

var user = User("동검")

}

android kotlin

Câu trả lời 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

339

2

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

0

427

4

IntelliJ IDEA 2023.1.3 (Community Edition) 이

0

448

1

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

0

866

3

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

0

249

1

it

0

158

1

주생성자

0

321

1

형변환

0

237

1

모듈 임포트

0

255

1

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

0

193

0

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

0

190

1

안녕하세요

0

203

0

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

0

258

1

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

0

788

1

package 선언 후 println 참조 못함

0

271

1

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

1

292

2

모듈 임포트가 안돼요.

1

305

2

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

0

269

2

33강 Sealed 클래스

0

174

1

모듈 사용 등록

0

340

1

인틀리제이 업데이트 관련

0

158

1

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

2

157

1

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

0

199

1