scala的隐式对象和隐式类

15 阅读1分钟

scala的隐式对象和隐式类

隐式类

背景:有一个现有的类,它有一个方法。现在我们需要对这个类的功能进行拓展,额外补充一个方法。但是,不允许直接修改原来的类的代码。

这个程序运行起来非常的稳定了,同时又不要去改动它之前的代码。 我们的基本思路是:再写一个类,然后在其中补充一个方法,然后让当前的类去使用这个方法。

package imp
/*
隐式类

背景:有一个现成的类,它有一个方法。我们现在需要对这个类的功能进行拓展:额外补充一个新方法
但是:不允许直接修改原来的类的代码

思路:
1.补充一个新的类,把这个新的方法写到这个 类中
2.补充一个隐式转换函数,把这个旧类转换成这个新类
 */
object imp5 {

  class User {
    def insertUser(): Unit = {
      println("添加yi  一个新用户...")
    }

  }
  implicit class UserExt(user: User) {
    def updateUser(): Unit = {
      println("修改用户...")
    }
  }



//  implicit def XXx(user: User):UserExt={
//    new UserExt
//  }
  def main(args: Array[String]): Unit = {

    var u1=new User()
    u1.insertUser()


    u1.updateUser()
  }

}