理论教育 深入解析Scala语言中的trait

深入解析Scala语言中的trait

时间:2023-11-24 理论教育 版权反馈
【摘要】:首先在Java JVM中验证一下trait的实现。在Scala中需要将特质trait翻译成为JVM的类和接口,在DOS提示符中进入UseTrait.Scala目录,执行编译Scalac UseTrait.Scala;然后进入UseTrait的字节码文件的目录,使用Java-private Logger查看。按F3键看一下特质App的源代码,原来UseTrait继承了特质App,而在特质App中定义了main的入口函数。

深入解析Scala语言中的trait

首先在Java JVM中验证一下trait的实现。在Scala中需要将特质trait翻译成为JVM的类和接口,在DOS提示符中进入UseTrait.Scala目录,执行编译Scalac UseTrait.Scala;然后进入UseTrait的字节码文件的目录,使用Java-private Logger查看。

(1)Logger特质trait

定义一个特质Logger:

在JVM中traitLogger被翻译成了Java的接口,如下所示:

(2)class ConcreteLogger类

定义一个类ConcreteLogger,继承特质Logger及Cloneable:

Trait特质的继承在JVM中被翻译成Java接口的implements实现,如下所示:

(3)TraitLogger特质(www.daowen.com)

定义特质TraitLogger,继承特质Logger:

特质TraitLogger在JVM中被翻译成为interface接口,如下所示:

(4)UseTrait对象

定义UseTrait对象,继续特质App:

在object UseTrait extends App{}对象体中没有定义main的入口函数(def main(args:Array[String]){}),那么编译器是如何找到入口运行的呢?按F3键看一下特质App的源代码,原来UseTrait继承了特质App,而在特质App中定义了main的入口函数。

特质App的部分源代码如下:

还可以在Java JVM中验证一下是否有main入口函数生成,如下所示为UseTrait在JVM中确实翻译生成了main入口函数:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈