Step into Scala - 12 - 对象与枚举
2015-05-02 23:54
162 查看
目录
对象与枚举
对象
单例对象
伴生对象
扩展类的对象
应用程序对象
枚举
摘要
静态方法,单例对象使用及作用,伴生对象,扩展类的对象,应用程序对象,枚举
Scala 没有静态属性和方法,需要使用单例对象来实现类似的功能。
对象的构造器不能提供构造器参数,在第一次使用时会被初始化。
单例对象可以用于提供常量及共享不可变对象。
伴生对象可以用于让一个类即拥有实例化方法又有静态方法。
伴生对象必须与同名类位于同一源文件中。
伴生对象与类可以互相访问各自的私有成员。
基类
扩展对象
每次调用
构造枚举
使用枚举
对象与枚举
对象
单例对象
伴生对象
扩展类的对象
应用程序对象
枚举
摘要
静态方法,单例对象使用及作用,伴生对象,扩展类的对象,应用程序对象,枚举
对象与枚举
对象
单例对象
与类不同,单例对象使用object进行声明
Scala 没有静态属性和方法,需要使用单例对象来实现类似的功能。
对象的构造器不能提供构造器参数,在第一次使用时会被初始化。
object Singleton { private var num = 0 def sequence() = { num += 1 num } } Singleton.sequence()
单例对象可以用于提供常量及共享不可变对象。
伴生对象
单例对象和类可以拥有相同名字,此时也称此单例对象为伴生对象。伴生对象可以用于让一个类即拥有实例化方法又有静态方法。
伴生对象必须与同名类位于同一源文件中。
伴生对象与类可以互相访问各自的私有成员。
class Companion(private var balance: Int = 0) { val id = Companion.sequence() //访问伴生对象的私有方法 } object Companion { private var num = 0 private def sequence(): Int = { num += 1 num } def getInfo(comp: Companion): String = { "balance is " + comp.balance //访问类的私有属性 } }
扩展类的对象
可用于实现类的可共享的默认对象基类
abstract class UndoableAction(val description: String) { def undo def redo }
扩展对象
object DoNothing extends UndoableAction("Do nothing") { override def undo: Unit = ??? override def redo: Unit = ??? } //使用默认对象 val actions = Map("open" -> DoNothing, "save" -> DoNothing)
应用程序对象
应用程序对象即对象拥有main()方法或继承
App类。该对象是一个应用的入口,可以通过
args获得命令行参数。
object Hello extends App { println("Hello World") if (args.length > 0) { println("args:" + args(0)) } else { println("no args") } }
枚举
Scala 并没有枚举类型,而是通过对象继承Enumeration类实现枚举功能。
每次调用
Value方法时都会自动生成一个枚举实例。
Value构造器为
(),
(id, name)或
(name)。
构造枚举
object TrafficColor extends Enumeration { val RED = Value(0, "stop") val YELLOW = Value(10) val GREEN = Value("go") val BLUE = Value }
使用枚举
//直接获得枚举 var red = TrafficColor.RED //通过索引获得枚举 red = TrafficColor(0) //通过 name 获得枚举 red = TrafficColor.withName("stop") red.toString //返回 name red.id //返回 id
相关文章推荐
- Step into Kotlin - 12 - Object 与枚举
- scala 中如何 声明 枚举对象
- Step into Scala - 01 - 安装与运行
- Step into Scala - 32 - Test
- Step into Scala - 02 - 数据类型
- Step into Scala - 07 - 异常
- Step into Scala - 27 - Future, Promise 与 SyncVar
- Step into Scala - 08 - 数组
- Step into Scala - 21 - I/O 操作与 Shell 操作
- Step into Scala - 24 - Option
- Step into Scala - 26 - 隐式参数,隐式转换与 DSL
- scala基础12-单例对象/伴生对象
- Step into Scala - 03 - 变量,常量与表达式
- Step into Scala - 15 - 特质
- Step into Scala - 19 - 正则表达式
- Step into MongoDB - 12 - 主从复制
- Step into Scala - 13 - 包和导入包
- Step into Scala - 18 - Function
- Step into Scala - 22 - Xml
- Step into Scala - 05 - 块与函数