scala中trait基本使用

(一)trait定义和作用

Scala没有Java中接口的概念,所以Scala的trait就类比Java中的接口。Scala的特质定义如下:

scala 复制代码
trait identified {  
    属性; 方法

}

trait是关键字,identified 表示一个合法的标记。

(二)实现单个特质

用一个类去实现单个特质

scala 复制代码
package level02

/*
 * 特质
 * trait: 实现多继承
 **/
object class16 {

  trait BeautifulEye {
    val eye: String = "眼睛漂亮"
  }

  trait Tall {
    val height: String = "大高个"
  }

  // 继承 with
  class Child extends BeautifulEye with Tall {
  }

  def main(args: Array[String]): Unit = {
    val child = new Child()
    println(child.eye)
    println(child.height)
  }
}

(三)实现多个特质

格式:类名 extends 特质1 with 特质2 with 特质3 其中多个特质的顺序可以交换。

【代码示范】

定义两个特质,使用一个类来实现他们。

scala 复制代码
package level02

/*
 * 特质
 * trait: 实现多继承
 **/
object class16 {

  trait BeautifulEye {
    val eye: String = "眼睛漂亮"  // 具体属性
    val name:String  // 抽象属性
  }

  trait Tall {
    val height: String = "大高个"
    def run():Unit={
      println("run......")
    }
    def jump():Unit
  }

  // 继承 with
  class Child extends BeautifulEye with Tall {
    val name :String="小花"
    def jump():Unit={
      println(s"${name},jump.......")
    }
  }

  def main(args: Array[String]): Unit = {
    val child = new Child()
    println(child.eye)
    println(child.height)
    child.run()
    child.jump()
  }
}

结果如下:

(四)特质成员的处理方式

一个类继承了一个特质之后,如何处理它的属性和方法呢?

分成四种情况:

1.特质中的抽象属性:可以通过val或var修饰来重写

2.特质中的抽象方法:一定要实现方法体。

3.特质中的具体属性:重写var不需override和var,只需要属性名即可;重写val需要加上override关键字。

4.特质中的具体方法:使用override重写,且保持名称,参数,返回值一致。

相关推荐
Thomas21437 天前
Java scala 数组 链表
java·链表·scala
江畔柳前堤8 天前
消息队列:从直觉到精通的完整认知地图
开发语言·人工智能·算法·机器学习·ruby on rails·scala
hopsky22 天前
《Scala 学习手册》核心内容详解
人工智能·学习·scala
abcy0712131 个月前
scala playframework 搭建与新建controller教程
scala
lpfasd1231 个月前
编程语言榜单变迁分析
开发语言·后端·scala
戮漠summer2 个月前
Missing Semester 计算机教育中缺失的一课 Lecture 01 Shell
开发语言·后端·scala
醉熏的石头2 个月前
Ubuntu 中的编程语言(中)
linux·ubuntu·scala
Irene19912 个月前
Scala、Java、Python、JavaScript 的核心特性和应用场景(Python 的“单机“局限性:GIL 机制导致的多核并行缺陷)
java·javascript·python·scala
李白的天不白3 个月前
确认 Nginx 配置文件是否真的生效
scala
醉颜凉3 个月前
Scala自定义Monad实战:从理论到应用的完整指南
大数据·算法·scala