一、对象
1.1、伴生对象
相同的名字,在同一个源文件中。 这个就是伴生机制,所谓伴生,就是在语言层面上,把static 成员和非static成员用不同的表达方式,class和object,但双方具有相同的package和name,但是最终编译器会把他们编译到一起,这是纯粹从语法层面上的约定。通过javap可以反编译看到。
package com.chb.test
class Test1 {
var field = "field"
def doSomething = println("do something");
}
object Test1 {
val a = "a string"
def printString = println(a);
}
1、Scala没有静态方法或静态字段,你可以用object这个语法结构来达到相同目的。 2、Object可以扩展其他类或特质,不能提供构造器参数,放在object中的方法都是静态方法。 3、何时使用object :
- 1、作为存放工具函数或常量的地方。
- 2、高效的共享单个不可变实例。
- 3、需要单个实例来协调某个服务时(单例模式)
1、伴生类私有化 2、在伴生对象中创建一个实例 3、在apply()中返回伴生类的实例
package com.chb.scala
import scala.collection.immutable.Map
/**
* 伴生类:
*/
class TestClass private {//1、伴生类私有化
private val tc1 = 1
def add() = {
tc1 + TestClass.tc2 //调用伴生对象的私有属性TestClass.xx
}
def test {
println("test class println")
}
}
/**
* 伴生对象:
*
*/
object TestClass {
val tcInstance = new TestClass() //2、在伴生对象中创建一个实例
private val tc2 = tcInstance.tc1+2 //调用 伴生类 的私有属性,通过伴生类的实例来调用
def apply() = { //3、在apply()中返回伴生类的实例
tcInstance
}
}
object testMain{
def main(args: Array[String]):Unit = {
for(i
关注
打赏