Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Java
- RaspberryPi
- maven
- GitHub
- plugin
- C
- react
- gradle
- Android
- CPP
- gnuplot
- OTLanguage
- 개발노트
- Vane
- Baekjoon
- boj
- 루비
- IntelliJ
- error
- Python
- Godot
- ruby
- jetbrains
- OAuth
- Spring
- kotlin
- JS
- Shell
- ruby2d
- rubymine
Archives
- Today
- Total
PersesTitan(페르) 기술블로그
[Kotlin] 코틀린 기초 - 생성자 순서 (주 생성자, init, 보조 생성자) 본문
코틀린의 생성자의 순서는 다음 순서대로 진행됩니다.
- 주 생성자
- init
- 보조 생성자
순서 확인하기
다음 코드를 보시면 init이 실행되고 보조 생성자가 실행된 것을 볼 수 있습니다.
class Test {
constructor() {
println("보조 생성자 실행")
}
init {
println("init 실행")
}
}
fun main() {
Test()
}
// 출력
// init 실행
// 보조 생성자 실행
해당 순서로 인해 발생하는 문제
위 순서로 인해 발생하는 문제는 다음과 같습니다. 보조 생성자에서 값을 초기화 할 경우 init에서 변수를 가져오게 되면 초기화가 되지 않았다고 에러가 발생하는 것이죠.
- 해당 코드는 에러가 발생하지 않습니다.
class Test {
private val a: Int
constructor(a: Int) {
this.a = a
}
}
- 에러가 발생하는 코드
class Test {
private val a: Int
constructor(a: Int) {
this.a = a
}
init {
println(a)
}
}
// error: Kotlin: Variable 'a' must be initialized
해결 방법
해당 방법을 해결하기 위해서는 변수 선언은 가장 처음에 실행되는 주 생성자에서 변수 선언을 하면 됩니다.
class Test(private val a: Int) {
init {
println(a)
}
}
관련 글
https://persestitan.tistory.com/122
https://persestitan.tistory.com/124
'Language > Kotlin' 카테고리의 다른 글
[Kotlin] 코틀린 기초 - 변수 정의 (var, val, lateinit) (0) | 2023.10.11 |
---|---|
[Kotlin] 코틀린 기초 - 클래스 및 생성자 (constructor) (0) | 2023.10.09 |
[Kotlin] 코틀린 기초 - 접근제어자 (0) | 2023.10.08 |
[Kotlin] apply, also, run, with, let 정리 (0) | 2023.09.16 |