scala学习笔记-对象
来源:互联网 发布:java应聘简历表格 编辑:程序博客网 时间:2024/05/22 08:21
1. 单例对象
Scala没有静态方法或者静态字段,可以用object这个语法结构来达到同样目的。对象定义了某个类的单个实例,包含了你想要的特性:
object Account{
private var lastNumber =0
def newUniqueNumber() = { lastNumber+ =1; lastNumber}
}
当你在应用程序中需要一个新的唯一账号时,调用Account.newUniqueNumber() 即可
2. 伴生对象
在Java中,通常会既有实例方法又有静态方法的类。在Scala中,可以通过类和与类同名的伴生对象来达到同样目的:
class Account {
var id= Account.newUniqueNumber()
private var balance = 0.0
def deposit( account : Double) { balance+=amount }
}
object Account{ //伴生对象
private var lastNumber =0
def newUniqueNumber() = { lastNumber+ =1; lastNumber}
}
类和它的伴生对象可以相互访问私有特性。它们必须存在于同一个源文件中。
3. 扩展类或特质的对象
一个object可以扩展类以及一个或多个特质,其结果是一个扩展了指定类以及特质的类的对象,同时拥有在对象定义中给出的所有特性。
一个有用的使用场景是给出可被共享的缺省对象。举例来说,考虑在程序中引入一个可撤销动作的类:
abstract class UndoableAction( val description: String) {
def undo():Unit
def redo():Unit
}
默认情况下可以什么都不做,只需要一个实例即可
object DoNothingAction extends UndoableAction(“Do nothing”){
override def undo(){}
override def redo(){}
}
4. apply方法
通常会定义和使用对象的apply方法。当遇到如下形式的表达式时,apply方法就会被调用:
Object (参数1,...,参数n)
通常,这样一个apply方法返回的是伴生类的对象
5. 应用程序对象
每个scala程序都必须从一个对象的main方法开始,这个方法的类型为 Array[String]=>Unit:
object Hello{
def main(args:Array[String]) {
}
}
6. 枚举
scala没有枚举类型,但标准类库提供了一个Enumeration助手类,可以用于产出枚举
定义一个扩展Enumeration类的对象并以value方法调用初始化枚举中的所有可选值。例如:
object Color extends Enumeration{
val RED,YELLOW,GREEN=Value
}
- scala 学习笔记--对象
- scala学习笔记-对象
- scala 学习笔记 面向对象
- scala学习笔记7 对象
- Scala学习笔记之面向对象
- Scala学习笔记之面向对象
- Scala学习笔记04【类和对象】
- Scala学习笔记3 - 类和对象
- scala学习笔记:面向对象编程基础
- scala中的函数、变量、集合、对象---scala学习笔记(1)
- Scala学习笔记(二)Scala面向对象编程
- 学习笔记10:Scala单例对象、伴生对象
- Scala学习笔记-伴生对象于孤立对象
- Scala学习(六)---Scala对象
- Scala面向对象学习
- 闭包 Scala学习笔记-面向对象篇
- apply方法 Scala学习笔记-面向对象篇
- sealed trait Scala学习笔记-面向对象篇
- 第三方登录(QQ登录)开发流程详解
- ios11 statusbar(状态栏隐藏问题)
- opencv-使用GrabCut算法进行交互式前景提取
- windows系统如何真正隐藏文件夹
- linux用户栈和内核栈解析
- scala学习笔记-对象
- PHP清空数组方法
- 制作本地YUM源(上传到web)
- 静态代码扫描之阿里java代码规范IDEA插件
- docker挂载win目录,安装laravel碰到的坑
- 推荐大神:
- 当我们在外部使用``–list``参数调用这个脚本时,这个脚本必须返回一个JSON散列/字典
- excel这几大数据处理技巧,高效率操作技能,今天免费交给你!
- FileChannel类的理解和使用(java.nio.channels.FileChannel)