scala对象
1.单例对象
/* scala中没有静态方法 静态字段 使用object达到同样的目的 首次使用时构造器会被执行 未被使用时不会被执行 */ object MyCounter { private var lastNumber = 0 def newUniqueNumber() = { lastNumber += 1 lastNumber } }
2.伴生对象
/* 伴生对象 伴生类 1.名称相同 2.类和他的伴生对象可以相互访问私有特性 3.必须在同一个源文件中 */ class MyCounter { val id = MyCounter.newUniqueNumber() private var balance = 0.0 } object MyCounter { 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(): Unit = ??? override def redo(): Unit = ??? }
4.apply方法
class Person private(id: Int, age: Int) { } object Person { def apply(id: Int, age: Int) = { new Person(id, age) } def main(args: Array[String]): Unit = { val p1 = Person(1, 2) } }
5.应用程序对象
1.main方法 2.继承App class Person private(id: Int, age: Int) { } object Person extends App { val p1 = Person(1, 2) }
6.枚举
/* scala没有枚举类型 助手类:Enumeration 定义扩展Enumeration类的对象,并以Value方法调用初始化枚举中的所有可选值 */ object TrafficLightColor extends Enumeration { val Red, Yellow, Green = Value def main(args: Array[String]): Unit = { val a: TrafficLightColor.Value = TrafficLightColor.Green //引用枚举值 类型:TrafficLightColor.Value } }