Xét là gì:sự khác biệt giữa tĩnh và đặc điểm năng động mixins
abstract class Base {
def something() = println("Base")
}
trait TraitA extends Base {
abstract override def something() = { super.something(); println("TraitA"); }
}
class Child extends Base {
override def something() {
println("Child")
}
}
Và sau đó:
val x = new Child with TraitA
x.something()
tôi nhận được:
Child
TraitA
Nhưng nếu tôi sử dụng:
class Child extends Base with TraitA {
override def something() {
println("Child")
}
}
val x = new Child
x.something()
tôi chỉ nhận được:
Child
Vì vậy, các differentes của việc sử dụng một đặc điểm ở công trường xây dựng hoặc trang web tuyên bố là gì? Tôi có thể có hành vi đầu tiên (các đặc điểm có thể xếp chồng) trong khi mở rộng/với tính cách trong tuyên bố của lớp không?