trait Iterator[A] { def hasNext: Boolean def next(): A}class IntIterator(to: Int) extends Iterator[Int] { private var current = 0 override def hasNext: Boolean = current < to // override๊ฐ ๊ผญ ์์ด๋๋๋ค. override def next(): Int = { if (hasNext) { val t = current current += 1 t } else 0 }}val iterator = new IntIterator(10)iterator.next() // returns 0iterator.next() // returns 1
Subtyping
Pet์ ๊ตฌํํ ๊ตฌํ์ฒด๋ง ๋ฃ์ ์ ์๊ณ
Pet์ ๋ฃ์ ์๋ ์๋ค.
import scala.collection.mutable.ArrayBuffertrait Pet { val name: String}class Cat(val name: String) extends Petclass Dog(val name: String) extends Petval dog = new Dog("Harry")val cat = new Cat("Sally")val animals = ArrayBuffer.empty[Pet] // Java Type Casting์ ๋น์ทํด๋ณด์ธ๋ค.animals.append(dog)animals.append(cat)animals.foreach(pet => println(pet.name)) // Prints Harry Sally