Scala

Scala开发教程(46): 所有类的公共子类?底层类型

jerry Scala
Scala开发教程(46): 所有类的公共子类?底层类型
前面我们给出了Scala的类的一个关系图: 在这张图的最下方我们可以看到有两个类,scala.Null和scala.Nothing. 这两个类的作用是Scala支持统一方式用来处理面向对象的一些边角情况。因为它们在类层次图的下方,因此也

Scala开发教程(45): Scala基本数据类型的实现方法

jerry Scala
Scala的基本数据类型是如何实现的?实际上,Scala以与Java同样的方式存储整数:把它当作32位的字类型。这对于有效使用JVM平台和与Java库的互操作性方面来说都很重要,。标准的操作如加法或乘法都被实现为数据类型基

Scala开发教程(44): Scala的类层次关系

jerry Scala
Scala开发教程(44): Scala的类层次关系
前面我们介绍了Scala的类的继承,本篇我们介绍Scala语言自身定义的类的层次关系,在Scala中,所有的类都有一个公共的基类称为Any,此外还定义了所有类的子类Nothing,下面的图给出的Scala定义的类层次关系的一个概要

Scala开发教程(42): 组合和继承–定义heighten和widen函数

jerry Scala
我们还需要最后一个改进,之前的Element实现不够完善,只支持同样高度和同样宽度的Element使用above和beside函数,比如下面的代码将无法正常工作,因为组合元素的第二行比第一行要长: new ArrayElement(Array("he

Scala开发教程(41): 组合和继承–定义factory对象

jerry Scala
到目前为止,我们定义了关于布局元素类的一个层次结构。你可以把包含这个层次关系的类作为API接口提供给其它应用,但有时你可以希望对函数库的用户隐藏这种层次关系,这通常可以使用factory(构造工厂)对象来实现。

Scala开发教程(40): 组合和继承–实现类Element的above,beside和toString()方法

jerry Scala
我们接着实现类Element的其它方法,如above, beside和toString方法。 above方法,意味着把一个布局元素放在另外一个布局元素的上方,也就是把这两个元素的contents的内容连接起来。我们首先实现above函数的第一个版

Scala开发教程(39): 组合和继承–使用组合还是继承

jerry Scala
Scala开发教程(39): 组合和继承–使用组合还是继承
前面我们说过,构建新类的两个基本方法是组合和继承,如果你的主要目的是代码重用,那么最好使用组合的方法构造新类,使用继承的方法构造新类造成的可能问题是,无意的修改基类可能会破坏子类的实现。 关于继承关系

Scala开发教程(38): 组合和继承–定义final成员

jerry Scala
在定义类的继承关系时,有时你不希望基类的某些成员被子类重载,和Java类似,在Scala中也是使用final来修饰类的成员。比如在前面的ArrayElement例子,在demo方法前加上final修饰符, class ArrayElement extends E

Scala开发教程(37): 组合和继承–多态和动态绑定

jerry Scala
Scala开发教程(37): 组合和继承–多态和动态绑定
在前面的例子我们看到类型为Element的变量可以保存ArrayElement类型的对象,这种现象称为“多态”。也就是基类类型的变量可以保存其子类类型的对象,到目前为止我们定义了两个Element的子类,ArrayElement和LineElem

Scala开发教程(36): 组合和继承–使用override修饰符

jerry Scala
在前面的例子LineElement使用了override来修饰width和height成员变量,在Scala中需要使用override来重载父类的一个非抽象成员,实现抽象成员无需使用override,如果子类没有重载父类中的成员,不可以使用override修