8.1单例对象
Scala中没有静态方法和静态字段,你可以用object 这个语法结构来达到同样的目的。
对象的构造器在该对象第一次使用时调用。如果对象没有使用过,他的构造器也不会被执行。
对象基本具有类的所有特性,就是一点,你不能设置构造器的参数。
8.2伴生对象
Java中会有类既有实例方法又有静态方法的类。Scala中可以通过伴生对象进行实现。
类和它的伴生对象可以相互访问私有特性,他们必须存在同一个源文件中。必须同名
8.3Apply方法
我们通常会定义和使用对象的apply方法,当遇到如下形式时:
Object(参数1、参数2、参数.…)会调用apply方法。
Apply方法一般都声明在伴生对象中。
8.4应用程序对象
每一个Scala应用程序都需要从一个对象的main方法开始执行,这个方法的类型为Array[String]=>Unit。
或者扩展一个App特质:
8.5枚举
Scala中没有枚举类型,定义一个扩展Enumeration类的对象,并以value调用初始化枚举中的所有可能值。
import org.scalatest.FunSuite
class Chapter07Test extends FunSuite {
test("core01") {
//Scala中没有静态方法和静态字段,你可以用object
}
test("core02") {
//伴生对象
}
test("core03") {
//Apply方法
}
test("core04") {
//应用程序对象
//继承app特质
}
test("core05") {
//Scala中没有枚举类型,定义一个扩展Enumeration类的对象,并以value调用初始化枚举中的所有可能值。
}
}
//Java中会有类既有实例方法又有静态方法的类。Scala中可以通过伴生对象进行实现。
//类和它的伴生对象可以相互访问私有特性,他们必须存在同一个源文件中。必须同名
object Chapter07Test {
//单例对象
private var lastName = "jim"
val abc = "green"
// Apply方法一般都声明在伴生对象中
def apply() = new Chapter07Test {}
}
//扩展一个App特质
object Hello extends App {
println("HelloWorld")
}
//枚举类
object TrafficLightColor extends Enumeration {
val Red, Yellow, Green = Value
}