标签:特质 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.关于抽象类和特质的使用,建议使用特质,因为一个类可以混入多个特质,但是只能继承一个抽象类
标签:特质 object err end 构造 color += var unit
原文地址:https://www.cnblogs.com/jason-dong/p/9503319.html