Triats

scala和java语言一样,采用了很强的限制策略,避免了多种继承的问题。在java语言中,只允许继承一个超类,该类可以实现多个接口,但java接口有其自身的局限性:接口中只能包括抽象方法,不能包含字段、具体方法。Scala语言利用Trait解决了该问题,在scala的trait中,它不但可以包括抽象方法还可以包含字段和具体方法。trait的示例如下:

1.png

生成的字节码文件反编译后的结果:

public interface cn.scala.xtwy.DAO {    
   public abstract boolean delete(java.lang.String);   
   public abstract boolean add(java.lang.Object);   
   public abstract int update(java.lang.Object);   
   public abstract scala.collection.immutable.List<java.lang.Object>query(java.lang.String);}

从反编译的结果中可以看出不包含字段和具体方法的traits使用Java interface来实现。

下面是带具体实现的traits代码


2.png

经过反编译后:

3.png

可以看出包含字段或者具体方法的traits使用Java abstract class来实现。

下面是类继承traits的演示:

4.png

当然类似于Java中的接口,如果有多个traits的话:

5.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容