深奥的对于新手,就像学数学一样,有个公式,在知道怎么用就是基本的入门了,而不是一下子就让你去深入研究为什么有这个公式,从何而来
进入主题,定义2类Man、SuperMan,创建Man的object,在main函数中为了使用SuperMan中的方法makeMiraclas。
首先得先将Man进行SuerMan的转换,即可使用。
//类1
class Man(val name:String)
object Man{implicit def man2SuperMan(man: Man)= new SuperMan(man.name) //隐式转换
}
//类2
class SuperMan(val name:String){def makeMiraclas = println(this.name + " Who are you ?")
}
object HelloImplicits {
def main(args: Array[String]): Unit = {
val man = new Man("Scala")
import com.wjgspark.scala.basics.implicits._
man.makeMiraclas //实现隐式转换的调用,用处不改变原有的类Man,实现自定义类
implicit val cont ="hoho"
talk("wjg")
}
def talk(name: String)(implicit cont:String)=println(name + " : " + cont)
}
//红色字体为拓展在不同包的情况下进行的隐式转换,若无默认隐式值,则可定义默认值,实现不满参数的调用talk("wjg")
object implicits{
implicit def man2SuperMan(man: Man)= new SuperMan(man.name)
}