码迷,mamicode.com
首页 > 其他好文 > 详细

scala 特质

时间:2018-08-20 00:32:01      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:特质   object   err   end   构造   color   +=   var   unit   

package com.jason.qianfeng

trait Iterator[A] {
  val name = "Iterator"

  def hasNext: Boolean

  def next: A
}

trait Log {
  def log(msg: String): Unit = {
    println(msg)
  }
}

class IntIterator(to: Int) extends Iterator[Int] with Log {
  var current = 0

  override def hasNext = current < to

  override def next = {
    if (current < to) {
      log("has next")
      val r = current
      current += 1
      r
    } else {
      0
    }
  }

}

object IteratorTest{
  def main(args: Array[String]): Unit = {
    val it = new IntIterator(10)
    println(it.next)
    println(it.next)
    println(it.next)
  }
}

scala 中的特质类似java中的接口,但是trait 更灵活,在trait 中

1.可以定义属性(抽象或是非抽象的)

2.可以定义抽象或具体方法

特质几乎和抽象类是一样的(不能定义构造函数)

3.一个类可以混入多个特质,第一个特质使用extends 混入,从第二个特质开始使用with 混入

4.关于抽象类和特质的使用,建议使用特质,因为一个类可以混入多个特质,但是只能继承一个抽象类

scala 特质

标签:特质   object   err   end   构造   color   +=   var   unit   

原文地址:https://www.cnblogs.com/jason-dong/p/9503319.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!