我们仍然需要能够创建新的元素对象。你已经看到了因为类Element是抽象的,所以“new Element” 不能被用来做这件事。因此,为了实例化一个元素,我们需要创建扩展了Element并实现抽象的contents 方法的子类。代码10.3展示了一种可能的方式:
class ArrayElement(conts: Array[String]) extends Element { def contents: Array[String] = conts }
代码 10.3 定义ArrayElement为Element的子类
类ArrayElement定义为扩展了类Element。就好象Java里,你在类名之后使用extends子句那样:
... extends Element ...
这种extends子句有两个效果:使类ArrayElement从类Element继承所有非私有的成员,并且使 ArrayElement成为Element的子类型。由于ArrayElement扩展了Element,类ArrayElement被称为类 Element的子类。反过来,Element是ArrayElement的超类。
如果你省略extends子句,Scala编译器隐式地假设你的类扩展自scala.AnyRef,在Java平台上与 java.lang.Object一致。因此,类Element隐式地扩展了类AnyRef。你可以在图释10.1上看到这些继承关 系。
图释 10.1 ArrayElement的类关系图
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索抽象
, extends
, 子类
, element
, contents
, 扩展类
, 类扩展
子句
scala程序设计、scala程序设计 第2版、java调用scala程序、scala程序设计 第二版、idea运行scala程序,以便于您获取更多的相关知识。