- 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. 关于抽象类和特质的使用, 建议使用特质, 因为一个类可以混入多个特质, 但是只能继承一个抽象类
来源: http://www.bubuko.com/infodetail-2734650.html