scala里面的方法定义先于执行体加载,所以下面问题是没有问题的 ,println(f) 先于定义
object Constructor { class Test{ println(f); def f = { "I am here!!!" } } def main(args: Array[String]): Unit = { new Test; } }
构造器是构造新的对象,首先初始化类中的定义的变量和方法,然后进入类体,之上往下加载类如:
class Constructor2 {var x = 0def f() ={x=12}f()}object Constructor2{def main(args: Array[String]): Unit = {var constructor2 = new Constructor2println(constructor2.x)}}
辅助构造器 this,通过this 可以重载构造器
package testclass Constructor2(var a:Int,val b:String="tiantian") {var x = 0def f() ={x=12}def this(c:Int){this(c,"tom")}}object Constructor2{def main(args: Array[String]): Unit = {var constructor2 = new Constructor2(12)println(constructor2.a)println(constructor2.b)}}
output:
12
tom
Process finished with exit code 0
本文探讨了Scala中构造器的执行顺序及方法初始化过程,包括主构造器、辅助构造器(this)的使用方法,以及构造器如何初始化类中的变量和方法。
574

被折叠的 条评论
为什么被折叠?



