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 | 29 | 30 | 31 |
Tags
- OTLanguage
- IntelliJ
- gnuplot
- 루비
- ruby
- JS
- Java
- Spring
- GitHub
- Shell
- OAuth
- plugin
- react
- Android
- Python
- Godot
- CPP
- maven
- error
- 개발노트
- kotlin
- rubymine
- Baekjoon
- boj
- jetbrains
- RaspberryPi
- gradle
- C
- ruby2d
- Vane
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
[Kotlin] 코틀린 기초 - 접근제어자
public, internal, protected, private이가 존재합니다. 자바와 다르게 kotlin은 접근제어자를 생략했을대 default접근제어자가 아닌 public접근제어자로 설정되어있습니다. kotlin에서는 특이하게 java와 다르게
persestitan.tistory.com
https://persestitan.tistory.com/124
[Kotlin] 코틀린 기초 - 클래스 및 생성자 (constructor)
인스턴스화 코틀린은 자바에서 사용하는 new 키워드를 사용하지 않는 특징이 존재합니다. 코틀린은 new키워드가 애초에 예약어로 잡혀있지 않은데 new키워드를 사용하지 않고 클래스명에다가 매
persestitan.tistory.com
'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 |