版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shouhuxianjian/article/details/55095070
关于类参数的困惑
对于scala来说,其默认就有个主构造器,一旦类实例化,就会自动调用该主构造器
class test(n:Int){
println(n)
override def toString = n
def printt() {println(f"class parameter ${n}")}
}
这里的n就是类参数,其在类new的时候会被主构造器收集并用来初始化,生存空间仅局限于当前实例化对象,而无法被对象外部所访问,所以如下调用都是合法的:
val obj = new test(1)
obj.printt()
而如下调用就是非法的:
obj.n
不过,可以通过将类参数声明为类字段,即:
class test(val n:Int){
println(n)
override def toString = n
def printt() {println(f"class parameter ${n}")}
}
这样,就可以直接调用:
obj.n
2017/02/14 第一次编写