scala的特质(trait),java怎么实现


我们知道scala也在jvm中运行,也编译成class,对于其他特性(比如函数式、val关键字、操作符重载等),我都能想明白这是怎么通过java实现的。
唯独trait无法想明白,这么一个类似多继承的东西,怎么能编译成java的class并在jvm中运行的呢????

scala

啃骨头的小虎 12 years, 7 months ago
  1. 没有具体实现的trait会直接被翻译成接口(Interface)
  2. 有方法具体实现的trait会如1.生成的接口之外,还会生成叫做”伴生类“的类(Class),此中实现trait中指定的实现。
  3. trait中的成员变量在生成的接口中转化成同名方法声明,由伴生类完成初始化。
  4. 生成的伴生类和生成的接口以及原本trait的超类都没没有继承关系。”该超类会被任何实现该trait的类继承“。
bolia answered 12 years, 7 months ago

Your Answer