package com.hlf.scala.basic
/**
* 測試多個特質中有同一個方法,混入順序的不同最終調用的結果
* 結果顯示:
* 如果混入的特質是子父類型的話,調用的是子的方法
* 如果混入的特質最終父類是同一個的話,調用的是最右邊的方法
* Created by hlf on 2016/8/18.
*/objectTestTraitOrder {def main(args: Array[String]) {
//先測試混入的特質有父子關係時的順序val test1 =new TestOrder with Foo with First
val test2 =new TestOrder with First with Foo
test1.name //結果是First..........
test2.name //結果是First.......... 說明混入有父子關係的特質最終是調用子的方法//測試同繼承一個特質時的順序val test3 = new TestOrder with First with Second
val test4 = new TestOrder with Second with First
test3.name //結果是Second........
test4.name //結果是First.........說明同是繼承一個父類時,最終調用的是右邊的方法//測試特質間的關係不是一層繼承關係時val test5 = new TestOrder with First with Three
val test6 = new TestOrder with Three with First
test5.name //結果是Three........
test6.name //結果是First........說明繼承的父類最終是同一個時,調用的是右邊的方法
}
}
traitFoo{def name = println( "Fooo..........")}
traitFirstextendsFoo{overridedef name: Unit = println( "First..........")
}
traitSecondextendsFoo{overridedef name: Unit = println( "Second........")
}
traitThreeextendsSecond{overridedef name: Unit = println( "Three........")
}
classTestOrder{}