美文网首页
Scala中的“特质” (trait)

Scala中的“特质” (trait)

作者: 0过把火0 | 来源:发表于2018-03-08 09:25 被阅读16次

转载注明出处[https://www.jianshu.com/p/6894484d4a53]

trait用来实现类似于java中接口的功能;
即:允许一个类继承多个超类。
trait是代码重用的基本单元,可以同时拥有抽象方法和具体方法;
scala中一个类只能继承自一个超类,却可以实现多个特质,从而复用特质中的方法和字段,实现了多重继承。

定义

1、单个特质混入类中

trait CarId{
    var id : Int    //抽象字段
    def currentId() : Int   //抽象方法
}
class Ben extends CarId{   //用extends或是with都可以
    override var id = 1000  
    def currentId() : Int = {id += 1; id}  //返回汽车编号  当然trait中可以包含具体方法的实现
}

2、多个trait混入类中

trait CarId{
    var id : Int    //抽象字段
    def currentId() : Int   //抽象方法
}

trait CarGreeting{
    def greeting(msg : String) {println(msg)}
}

class Ben extends CarId with CarGreeting{   //用extends混入第一个trait,使用with混入更多trait
    override var id = 1000  
    def currentId() : Int = {id += 1; id}  //返回汽车编号  当然trait中可以包含具体方法的实现
}

object MyCar{
    def main(args: Array[String]){
        val ben = new BenCar()
        ben.greeting("ben  %d hello!", ben.currentId)
    }
}

相关文章

  • scala学习 - 特质

    本文来自《Programming in Scala》一书 Scala学习之特质(trait) 1 特质的定义 特质...

  • scala(十二) 特质

    特质的定义 Scala语言中,采用特质(trait)来代替接口的概念,也就是说,多个类具有相同的特质(trait)...

  • Scala中的“特质” (trait)

    转载注明出处[https://www.jianshu.com/p/6894484d4a53] 序 trait用来实...

  • 【Scala】Scala特质

    PS:本篇主要内容来自 《scala 编程》一书。 一、特质的基本概念 在 Scala 中 Trait 为重用代...

  • Scala基础(7)- 特质

    特质是Scala中一个很重要的特性。 更灵活的接口 Scala的特质(trait)定义和class几乎相同,只是t...

  • Scala基础——特质(trait)

    概述 java通过接口实现多重继承,scala没有接口通过trait关键字实现多重继承。特质类似于抽象类的定义,t...

  • 值类型与通用特质

    值类型与通用特质是scala特性中一个特别知识点,需要工作使用中慢慢体会 通用特质 继承自Any的trait,内部...

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

    scala提供trait特质而非接口,特质可以同时拥有抽象方法和具体方法,以及状态,而类可以实现多个特质。其实在s...

  • 好程序员大数据教程分享Scala系列之特质

    好程序员大数据教程分享Scala系列之特质,特质的定义除了使用关键字trait之外,与类定义无异。 特质用来在类之...

  • scala的Trait

    Trait基础 scala 中的Trait和Java中的接口(interface)极其类似 接口是彻底的抽象类,所...

网友评论

      本文标题:Scala中的“特质” (trait)

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