抽象类型type的使用

xiaoxiao2021-02-27  226

package currencies /** * Created by jack on 2017/8/4. */ abstract class Currency { type CCurrency <: Currency val mount:Long def designation:String def +(that:CCurrency):CCurrency = new CCurrency { this.mount + that.mount } def *(factor:Double):CCurrency = new CCurrency { this.mount*factor } } class MyCurrency extends Currency { override type CCurrency = MyCurrency override val mount: Long = 100 override def designation: String = "hello" } object NewCurrency extends App{ val a = new MyCurrency() val b = new MyCurrency() val c = a+b } 上面这段代码看起来没有任何问题,但是在执行“+”或者“*”操作的时候,编译无法通过,究其原因是因为scala不允许实例化一个type所代表的类型的对象,也就是上面 CCurrency所代表的类型,这是一个抽象的类型
转载请注明原文地址: https://www.6miu.com/read-12893.html

最新回复(0)