脚本宝典收集整理的这篇文章主要介绍了Scala 速通语法(七)| 特质,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
//最简化的特质就是关键字trait+标识符:
traIT HairColor
//特质作为泛型类型和抽象方法非常有用
trait Iterator[A] {
def hasNext: Boolean
def next(): A
}
//扩展 trait Iterator [A] 需要一个类型 A 和实现方法hasNext和next
//实现
class test extends HairColor{
override def hasBext : Boolean = true
override def next():String ={PRintln("test trait")}
}
extends
关键字,如果多个特质,那么需要使用with
连接//动态混入
package com.zhy.charter03
/**
* @author ZHY
* @data 2021/9/20
*/
object MaxInDeno01 {
def main(args: Array[String]): Unit = {
//在不修改 类的定义基础继承关系,让他们可以使用 trait 方法
val oracleDB =new OracleDB with t3
oracleDB.insert(100)
val MySQL3 = new MySQL3 with t3
mySQL3.insert(2020)
//抽象类有抽象方法,动态混入特质
val mySQL3_ = new MySQL3_ with t3 {
override def say(): Unit = {
println("say 抽象类实现")
}
}
mySQL3_.say()
}
}
trait t3{
def insert(id:Int): Unit ={//方法 特质实现
println("插入--->"+id)
}
}
class OracleDB{//空
}
abstract class MySQL3{//空
}
abstract class MySQL3_{
def say()
}
特质声明顺序从左到右 Scala 在执行叠加对象的方法时,会首先从后面的特质(从右向左)开始执行 Scala 中特质中如果调用 suPEr,并不是表示调用父特质的方法,而是向前面(左边)继续查找特质,如果找不到,才会去父特质查找 如果想要调用具体特质的方法,可以指定:super[特质].xxx(…).其中的泛型必须是该特质的直接超类类型
富接口
以上是脚本宝典为你收集整理的Scala 速通语法(七)| 特质全部内容,希望文章能够帮你解决Scala 速通语法(七)| 特质所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。