scala의 어떤 클래스가 클래스를 상속받고 트레이트(trait)를 믹스인하는 초기화는 다음 순서와 같다.


object Main extends App {
trait T1 {
println("t1") // 4
}

trait T2 {
println("t2") // 5
}

class BaseParent {
println("base-parent") // 2
}

class Parent extends BaseParent {
println("parent") // 3
}

class Example extends Parent with T1 with T2 {
println("example") // 6
}

println(s"before") // 1
new Example
println(s"after") // 7
}


결과는 다음과 같다. 


부모 클래스의 부모 클래스부터 초기화되고 다음에 부모 클래스가 생성된다. 

다음에 믹스인(mix in)한 트레이트가 초기화된다. 


before

base-parent

parent

t1

t2

example

after





Posted by '김용환'

댓글을 달아 주세요