美文网首页
scala中的接口与java中的接口抽象类的区别

scala中的接口与java中的接口抽象类的区别

作者: 会飞的蜗牛66666 | 来源:发表于2018-09-01 14:37 被阅读0次
     我们知道java中我们经常看到同时提供接口和抽象基类的做法,那么scala中是否也有这些类和操作呢?
    

    scala提供trait特质而非接口,特质可以同时拥有抽象方法和具体方法,以及状态,而类可以实现多个特质。其实在scala中也有抽象类和接口的说法,按照java的做法也是可行,那么我们现在举例说明一下scala中针对拥有抽象类和接口的共合体是怎么做的。

    如下,定义了一个特质:

    /**

    • 定义一个特质
      */
      trait Logger {

    def log(msg: String)

    }

    子类的实现或继承
    class ConsoleLogger extends Logger {

    /**
    * 实现抽象类的方法
    */
    // def log(msg: String): Unit = {
    // println(msg)
    // }

    /**
    * 实现接口的方法
    * @param msg
    */
    override def log(msg: String): Unit = {
    println(msg)
    }
    }

    如下我们可以看到,我们无须将方法声明为abstract,特质中未被实现的方法,默认就是抽象的。
    由此,我们可以得出在scala中编写程序的时候,可以吧抽象方法和具体方法,状态都写在trait中。

    相关文章

      网友评论

          本文标题:scala中的接口与java中的接口抽象类的区别

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