생성자에서 다른생성자를 호출하는 this 의 예
504
67 asked
아래처럼 해도 될는지 모르겠습니다
class User {
var name = "동남"
constructor(name: String) {
println("constructor : $name") // constructor : 동검
println("생성자에서 다른 생성자를 호출 : ${this.name}") // 생성자에서 다른 생성자를 호출 : 동남
}
}
fun main() {
var user = User("동검")
}
Answer 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)을 사용하는 것이 더 좋은 방법일 수 있습니다. 초기화 블록은 객체를 초기화하기 전에 추가 작업을 수행하는 코드 블록입니다. 이를 통해 생성자 호출 과정에서 다른 작업을 수행할 수 있습니다.
다른 질문이 있으시면 언제든지 물어보세요!
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

