Triats

作者: LuciferTM | 来源:发表于2016-12-01 17:00 被阅读40次

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

相关文章

  • Triats

    scala和java语言一样,采用了很强的限制策略,避免了多种继承的问题。在java语言中,只允许继承一个超类,该...

网友评论

      本文标题:Triats

      本文链接:https://www.haomeiwen.com/subject/rdsvpttx.html