scala08.对象

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
}

你可能感兴趣的:(scala08.对象)