scala2.0-杂记

关于类参数的困惑

对于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 第一次编写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值