Scala/对象
外观
< Scala
在 Scala 中,对象是一个带有名稱的实例,具有字段和方法等成员。对象和类具有相同的名称并在同一个源文件中定义,被称为伴生对象。伴生对象具有特殊的访问控制属性,这在Scala/访问修饰符中介绍。
一个简单的对象示例
object SimpleObject
val a = SimpleObject
在第一行中,关键字“object”用于定义一个新对象,后面跟着对象的名称,这里为“SimpleObject”。在第二行中,一个名为“a”的值被赋值为名为“SimpleObject”的对象实例。
对象的成员类似于类的成员。有关更多信息,请参见Scala/类#成员。对象中成员的示例
object MembersObject {
val someValue = "test"
def someMethod(a:Int) = a*a
}
println("someValue is: " + MembersObject.someValue) //Prints "someValue is: test".
println("someMethod(3) gives: " + MembersObject.someMethod(3)) //Prints "someMethod(3) gives: 9".
对象还支持特殊的“apply”方法,有关更多信息,请参见Scala/类#Apply。
对象的一种用途是包含独立于任何环境的字段和方法。一个例子是“math”,它是标准库中的一个对象,它包含几个仅依赖于传递给它们的任何参数(如果有)的字段和方法。
println("Value of pi: " + math.Pi) //Prints "Value of pi: 3.141592653589793"
println("Square root of 4: " + math.sqrt(4)) //Prints "Square root of 4: 2.0"
println("Square root of 5: " + math.sqrt(5)) //Prints "Square root of 5: 2.23606797749979"
对象的另一个用途是创建类的实例
class Rectangle(val a:Int, val b:Int)
object Rectangle {
def createValidRectangle(a:Int, b:Int) = new Rectangle(math.max(a, 1), math.max(b, 1))
}
val validRectangle = Rectangle.createValidRectangle(3, -10000)
println("Valid rectangle: " + validRectangle.a + ", " + validRectangle.b) //Prints "Valid rectangle: 3, 1".
在上面,仍然可以通过直接使用“Rectangle”类的构造函数来创建无效的矩形。Scala/可见性描述了如何限制对构造函数的访问,这与对象结合使用,使得更容易确保和验证只创建某些给定类的有效类实例。
对象的第三个用途是创建 Scala 程序的入口点。这是通过定义一个具有特定签名的“main”方法来完成的
object ProgramEntryPoint {
def main(args:Array[String]) = {
println("Program execution start.")
println("Program execution end.")
}
}
行“def main(args:Array[String])”指示了入口点有效的必需签名。有关更多信息,请参见Scala/设置#编译 Scala。