@Scala的动态混入
用于构建特质的对象
1. 除了在构建类的时候声明继承特质之外,还可以在构建对象的时候混入特质,扩展目标类的功能
2. 这种方式也可以用于抽象类功能的扩展
3. 动态混入是scala中特有的方式,可以在不改变类声明、定义的情况下,扩展类的功能,非常的灵活(可以降低耦合度)
4. 动态混入可以在不影响继承关系的基础上,给指定的类扩展功能。
5. 若抽象类中有抽象方法,该如何动态混入特质,将特质置于抽象类之后,再放置with关键字,并写实现方法
object Demo0 {
def main(args: Array[String]): Unit = {
val oracleDB = new OracleDB with Operate3
oracleDB.insert(100)
val mySQLDB = new MySQLDB with Operate3 {}
mySQLDB.insert(500)
val mongDB = new MongDB with Operate3 {
override def say(): Unit = {
println("重写抽象方法 say")
}
}
mongDB.insert(1000)
mongDB.say()
}
}
trait Operate3 { //定义特质
def insert(id: Int): Unit = { //定义一个方法 并实现
println("插入数据 =" + id)
}
}
class OracleDB {} //定义一个方法
abstract class MySQLDB {} //定义一个抽象类
abstract class MongDB {
def say()
}```