Scala Trais

May022010

怎么scala的trais和java的interface这么像呢?不过scala的也有奇特的地方,它可以在trait里面进行实现,还有进行堆栈式的接口修改。scala的trait对比class来说有

  • 1.不可以有类型参数
  • 2.class中super是静态绑定的,而在trait中是动态绑定的。
    scala的trait也比较有趣,比如定义一个抽象类
    abstract class IntQueue {
    def get():Int
    def put(x:Int)
    }
    我们可以在trait中覆盖并且调用父类的put方法,而这在普通class中是不行的。
    trait Doubing extends IntQueue {
    abstract override def put(x:Int) {super.put(2*x)}
    }
    嗯,当然如果一个trait是继承某个类的,那么只有同是继承了这个类的class可以使用这个trait.

  •