Scala程序中的扩展类

我们仍然需要能够创建新的元素对象。你已经看到了因为类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程序,以便于您获取更多的相关知识。

时间: 2024-09-10 00:55:47

Scala程序中的扩展类的相关文章

三层结构ASP.NET程序中,把实体类自动显示在页面上的例子(c#)

asp.net|程序|显示|页面 在这里我们假设这样一个场景:在一个三层bs系统(asp.net)中有一个实体类Student,包括Name,Age两个字段.现在需要把这个实体类的数据显示在一个StudentInfo.aspx页面上,StudentInfo.aspx中有两个文本框:StudentName(用来显示Student.Name)StudentAge(用来显示Student.Age).下面的步骤将通过反射和Attribute来实现自动把Student实体显示在StudentInfo中:1

Scala程序中如何实现多态和动态绑定

在10.4节中你看到了类型Element的变量可以指向类型ArrayElement的对象.这种现象的名字叫多态:polymorphism,是指"许多形状"或"许多形式"的意思.这种情况下,Element对象可以有许多形式.这种类型的多态被称为子类型化多态:subtyping polymorphism.Scala里另一种类型的多态,称为统一多态:universal polymorphism,将在第19章讨论.目前为止,你已经看到了两种形式:ArrayElement和L

从Python程序中访问Java类的简单示例_python

from jnius import autoclass >>> Stack = autoclass('java.util.Stack') >>> stack = Stack() >>> stack.push('hello') >>> stack.push('world') >>> stack.pop() 'world' >>> stack.pop() 'hello' 上面的代码中,我们使用 auto

在非MFC程序中引用CString

CString在当今软件设计界里还是小有名气的,说它是MFC中使用的最多的类一点也不过,然而在使用sdk编windows程序的时候,确不能利用CString类,只能用sdk的运行时库,比如strlen,strcpy,strstr等等,本文讨论的是在非mfc程序中使用CString类的方法,算是个引子,如果有更好的实现方法,欢迎大家讨论. 为了使用CString类,首先源文件必须是以cpp结尾的,这是因为vc默认对不同的扩展名采用不同的编译方法和错误检查,mfc的支持文件Afx.h只有由cpp为扩

浅析PHP程序中的目录遍历漏洞

目录遍历漏洞在国内外有许多不同的叫法,比如也可以叫做信息泄露漏洞,非授权文件包含漏洞.名称虽然多,可他们却有一个共同的成因,就是在程序中没有过滤用户输入的../和./之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件,其危害可想而知.这类漏洞大家比较熟悉的可能就是在一些邮件列表程序以及网络硬盘程序中,其实这类漏洞还广泛存在与一些国外的BLOG程序中,这类漏洞大概分两种下面就来通过实例来说明这类漏洞是如何产生以及该如何防范. 首先,我们来看一个国外的BLOG,前几天从网上下

如客户端程序中自定义的bindatatable类,是datatable的扩展类),脚本编译失败

问题描述 应用系统开发环境:client/server模式VisualStudio2010,.netframework4.0语言c#应用了Remoting,WCF技术.数据库:mssqlserver性能测试工具:Loadrunner12,选择.net协议录制,录制选项中的filter选择新建filter(基于remoting.WCF等四项基本filter,附加客户端程序的DLL).使用loadrunner12录制应用系统的客户端软件,录制脚本中提示某些类未找到(.注释一些编译不通过的脚本,编译通

在你的程序中如何使用CButtonST类

首先在你的工程中加入如下文件:BtnST.hBtnST.cpp 从v3.5版本开始,CButtonST支持使用BCMenu类创建菜单.为了能够使用BCMenu,你必须在 BtnST.h中加入下面二行: #define BTNST_USE_BCMENU#include "BCMenu.h" 当然,你也必须在你的工程文件中加入下面的头文件: BCMenu.hBCMenu.cpp 注意:当 BCMenu 使参数可用时,与用SetNenu的方法是不同的! 从v3.6版本开始, CbuttonS

浅谈在应用CRectTracker类的程序中响应WM_LBUTTONUP消息

本文配套源码 CRectTracker类也有人称之为"橡皮筋"类.我们可以通过Windows自带的画图板来了解这个类的作用:用"选定"功能在画图区随意选中一块儿区域,此时会出现一个由虚线和八个调整标记点组成的矩形选框,我们可通过鼠标点中矩形选框的中心移动其位置,并且能利用调整标记 点来改变其大小--这个矩形选框其实就是一个"橡皮筋选框". CRectTracker类的使用并不是什么新鲜的话题,然而在应用这个类的过程中,我却发现了一个小问题:我创建

在MFC单文档程序中,如何在子对话框类中访问视类中的一个变量?

问题描述 在MFC单文档程序中,如何在子对话框类中访问视类中的一个变量? 如题,小弟最近遇到一个问题,新建一个单文档程序,并在其中引入对话框资源.我想在视类的OnDraw()函数中通过响应视类的一个变量的变化来改变视类窗口中图形的状态,而该视类变量的变化是由对话框中的一个控件控制的,这个控件是由旋钮控件和编辑控件捆绑而成的.在网上看了一些资料,试了其中的一些方法,都没能成功.论坛中高手众多,想请热心的高手们给个解决方法,在此先谢过了!能给个相似的例子的更好! 解决方案 要么你把那个变量定义成静态