24、Scala面向对象编程深入解析

Scala面向对象编程深入解析

1. Scala类型系统与值类

Scala拥有丰富的类型系统,这使得并非所有类型都能像Java那样在普通变量和方法声明中被引用。为了解决一些性能和类型包装的问题,Scala 2.10引入了值类(Value Classes)和通用特质(Universal Traits)。

1.1 值类的定义与规则

值类是一种特殊的类,它可以避免包装类型带来的堆分配开销。以下是一个简单的值类示例:

class Dollar(val value: Float) extends AnyVal {
  override def toString = "$%.2f".format(value)
}
val benjamin = new Dollar(100)
// Result: benjamin: Dollar = $100.00

要成为有效的值类,必须遵循以下规则:
1. 值类有且仅有一个公共的 val 参数(从Scala 2.11开始,该参数也可以是非公共的)。
2. 参数的类型不能本身就是值类。
3. 如果值类是参数化的,则不能使用 @specialized 注解。
4. 值类不定义辅助构造函数。
5. 值类只定义方法,不定义其他 val var
6. 值类不能重写 equals hashCode

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值