解释scala类的这种行为

时间:2015-04-10 19:18:46

标签: scala class object

我想知道scala类的这种行为,它显示在代码片段中。执行下面的代码打印hi,我的困惑是在后台发生的事情,没有任何方法和字段定义,TestClass的调用执行代码?同样为什么允许在类中编写这种裸码?

class TestClass {

  if(true)
    println("hi")
}

object TestObject extends App{
  val ci = new TestClass
}

2 个答案:

答案 0 :(得分:3)

类,对象或特征的主体(方法定义除外)是其(主)构造函数。扩展DelayedInit(或App,扩展DelayedInit)的类和对象更复杂。

答案 1 :(得分:1)

'裸露'的特殊语法类中的代码是Scala相当于Java的初始化器/匿名构造函数,它们在代码周围使用大括号。 Java中的初始化程序和Scala类中的代码都是在对象创建时执行的,这是TestObject在使用TestClass调用new构造函数时所执行的操作。