图释 11.1 Scala 类层级图
图释11.1展示了Scala的类层级的大纲。层级的顶端是类Any,定义了包含下列的方法:
final def ==(that: Any): Boolean final def !=(that: Any): Boolean def equals(that: Any): Boolean def hashCode: Int def toString: String
因为每个类都继承自Any,Scala程序里的每个对象都能用==,!=或 equals比较;用hashCode哈希;和用toString格式化。类Any里的等号和不等号方法,==和!=,被声明为 final,因此它们不能在子类里面重载。实际上,==总是与equals相同,!=总是与equals相反。因此独立 的类可以通过重载equals方法剪裁==或!=的意义。我们会在本章后面展示一个例子。
根类Any有 两个子类:AnyVal和AnyRef。AnyVal是Scala里每个内建值类的父类。有九个这样的值类:Byte,Short ,Char,Int,Long,Float,Double,Boolean和Unit。其中的前八个对应到Java的原始类型,它们的值 在运行时表示成Java的原始值。Scala里这些类的实例都写成文本。例如,42是Int的实例,'x' 是Char的实例,false是Boolean的实例。你不能使用new创造这些类的实例。这一点被“小伎俩 ”,值类都被定义为即是抽象的又是final的,强制贯彻。因此如果你写了:
scala> new Int
你就会得到:
< console>:5: error: class Int is abstract; cannot be instantiated new Int ˆ
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索实例
, boolean
, equals
, scala
, 重载等号 加号
, 层级
any
,以便于您获取更多的相关知识。