自身类型可实现依赖注入的功能。
object TraitSelfType {
def main(args: Array[String]): Unit = {
val user = new Register("alice", "111111")
user.insert()
}
}
// 用户类
class User(val name: String, val password: String)
trait UserDao {
//定义自身类型,实现依赖注入
_: User =>
// 模拟插入数据
def insert(): Unit = {
println(s"insert into db: $name $password")
}
}
// 定义注册类
class Register(name: String, password: String) extends User(name, password) with UserDao {
println("Register successful!")
}
模拟注册、插入