Scala的类层级:与Java类之异同

图释 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
,以便于您获取更多的相关知识。

时间: 2024-09-17 03:31:47

Scala的类层级:与Java类之异同的相关文章

java类的问题-Java类的实例化,对象的声明,使用

问题描述 Java类的实例化,对象的声明,使用 有没有哪位大神帮忙解释一下图中的代码,本人是新手,希望各位前辈指教 解决方案 创建一个person类 类里面两个变量一个方法 方法体的内容是打印这个类里面变量的值 然后书上写错了 应该是person 不是person2 解决方案二: 书上说的很清楚了. 比如 int i = 1; 这个你懂么? i是一个int型的变量,初始化值指向一个整数1. 那么 helloworld c = new helloworld(); c是一个helloworld型的变

java类的问题-java类中的返回语句提取

问题描述 java类中的返回语句提取 interface Car{ String getName(); int getPrice(); int getQuan(); int getIndividualSales(); } class CarShop{ private int money_a=0; private int money_b=0; public void saleCar(Car car){ System.out.println("品牌"+car.getName()+"

引用类-JSP引用java类问题, 类放在默认的src文件夹里,引用不到

问题描述 JSP引用java类问题, 类放在默认的src文件夹里,引用不到 我建了一个dynamic web工程,想用JSP引用java类,我写的类放在Java Resources/src/(default packge) 这个默认的文件下,有个公共类Student,在JSP里有语句/jsp:useBean 总是提示我错误: Student cannot be resolved to a type 我觉着是没引用到那个类,是什么原因啊

Java语言入门教程(二):Java类的包

Java应用是由若干个类组成的.但是从逻辑上考虑,这些类解决的问题都是不同的. 比如某些类解决了数据库访问问题,某些类解决了安全控制问题-就如同我们计算 机硬盘上的文档,我们不会把它们都杂乱无章的放在某个硬盘的根目录下,而是按照个人 习惯进行分类,放在不同的文件夹下.Java应用中的类也一样,也应该按照逻辑进行分类 ,放在不同的目录下,这就是包的概念. 虽然Java语法本身,不要求必须给某个类显式指明包名,可以使用默认包.但是,在 开发Java项目的过程中,任何类都应该有包.对一个类指定包名,使

使用bat 运行java类

问题描述 为了进行测试,需要使用bat来执行一个java类,这个java类没有在任何容器里,只是用eclipse打的jareclipse是一个简单的main,但需要引用一些jar包bat内容如下:D:jdkjdk1.5.0_06binjava-cp.D:projecttesttest.jar:.D:commliblibcommons-collections-3.1.jarcomm.test.CapabilityTestnamesex其中:test.jar是测试代码,里面只有CapabilityT

java类中的链接

问题描述 Java类的链接Java类的链接指的是将Java类的二进制代码合并到JVM的运行状态之中的进程.在链接之前,这个类必需被成功加载.类的链接包括验证.准备和解析等几个步骤.验证是用来确保Java类的二进制表示在构造上是完全正确的.假如验证进程出现错误的话,会抛出java.lang.VerifyError错误.准备进程则是创立Java类中的静态域,并将这些域的值设为默许值.准备进程并不会执行代码.在一个Java类中会包含对其它类或接口的形式援用,包括它的父类.所实现的接口.方法的形式参数和

了解Groovy、Scala和Clojure如何将行为融入到Java类中

Java 语言的设计有目的地进行了一定的删减,以避免前代产品中已发现的一些问题.例如,Java 语言的设计人员感觉 C++++ 中的多重继承性带来了太多复杂性,所以它们选择不包含该特性.事实上,他们在该语言中很少构建扩展性选项,仅依靠单一继承和接口. 其他语言(包括 Java 下一代语言)存在巨大的扩展潜力.在本期和接下来的两期文章中,我将探索扩展 Java 类而不涉及继承性的途径.在本文中,您会了解如何向现有类添加方法,无论是直接还是通过语法糖 (syntactic sugar). 表达式问题

怎样在Redhat 9.0下让PHP支持Java类

最近在Linux下的PHP支持Java类,我把调试笔记经过整理总结后写出来,希望对大家今后的调试会有所帮助. 系统环境: Redhat 9.0 Apache-1.3.27 Mysql3.23-54a-11 Php-4.32 j2sdk1.4.1_03 安装配置: 1.mysql使用的是redhat9自带的rpm包,不介绍安装了,jdk的安装也很简单,我们把jdk安装到/usr/java/j2sdk1.4.1_03 并在/etc/profile设置jdk环境参数. 2.编译安装apache tar

Java 类中类属性和对象属性的初始化顺序

对象 边城狂人 Java 类中类属性 (static 变量) 和对象属性 (非 static 变量) 的初始化顺序可以用如下程序测试: /** * @(#) Test.java * @author fancy */ public class Test { static String a = "string-a"; static String b; String c = "stirng-c"; String d; static { printStatic("