다음과 같은 클래스 계층을 만들었습니다.
open class A {
init {
f()
}
open fun f() {
println("In A f")
}
}
class B : A() {
var x: Int = 33
init {
println("x: " + x)
}
override fun f() {
x = 1
println("x in f: "+ x)
}
init {
println("x2: " + x)
}
}
fun main() {
println("Hello World!!")
val b = B()
println("in main x : " + b.x)
}
이 코드의 출력은
Hello World!!
x in f: 1
x: 33
x2: 33
in main x : 33
그러나 나는 초기화 변경하는 경우 x
에서을
var x: Int = 33
에
var x: Int = 0
출력은 위의 출력과 달리 메소드의 호출을 보여줍니다.
Hello World!!
x in f: 1
x: 1
x2: 1
in main x : 1
누구나 초기화 0
가 다른 값을 가진 것과 다른 동작 을 일으키는 이유를 알고 있습니까?