Scala学习笔记(六)——Scala的层级

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wuqingdeqing/article/details/86666086

Scala里,每个类都继承自通用名为Any的超类。因为所有的类都是Any的子类,所以定义在Any中的方法就是共同的方法,它们可以被任何对象调用。

6.1 类层级

根类Any有两个子类:AnyVal和AnyRef。AnyVal是Scala里每个内建值的父类。有9个这样的值类:Byte、Short、Char、Int、Long、Float、Double、Boolean和Unit。其中前8个对应Java的基本类型,它们的值在运行时表示成Java的基本类型的值。Scala里这些类的实例都写成字面量。

另一个值类,Unit,大约对应于Java的void类型,被用作不返回任何结果的方法的结果类型。Unit只有一个实例值,写成()。

AnyRef是Scala里所有引用类的基类。在Java平台上,它实际上就是java.lang.Object类的别名。因此Java里写的类和Scala里写的都继承自AnyRef。可以认为Object是Java平台使用AnyRef的方式。推荐的风格是在任何地方都只使用AnyRef。

6.2 原始类型

Scala以Java同样的方式存储整数:把它当做32位的字。这对在JVM上的效率及与Java库的互操作性方面来说都很重要。标准的操作如加法等都被实现为基本操作。当整数需要被当做Java对象看待的时候,Scala就使用备份类java.lang.Integer。

Scala里的相等操作==被设计为对类型表达透明。对值类型来说,就是自然的相等。对引用类型来说,==被视为Object里的equals方法的别名。这个方法被初始定义为引用相等,但被许多子类重写以实现它们自然理念上的相等行。

6.3 底层类型

Null类是null引用对象的类型,它是每个引用类的子类。Null不兼容值类型。

Nothing类型在Scala类层级的最低端;它是任何其他类型的子类型。然而,根本没有这个类型的任何值。它的一个用处是标明不正常的终止。

猜你喜欢

转载自blog.csdn.net/wuqingdeqing/article/details/86666086