Scala 之构造器(六)

  • Scala 有主构造器与辅助构造器之分,辅助构造器可以有多个,用this关键字修饰。
  • 每个辅助构造器都必须调用一个此前已经定义的辅助构造器或主构造器。
  • 主构造器的声明必须得放在类名后面。
package objectDemo

/**
  * 主构造器demo类
  * 主构造器的声明放在类名后面
  * 主构造器中val修饰的在伴生对象中不可修改,var修饰的可修改,
  * 没加修饰符的如下的age参数只能在本类中调用,默认为val修饰,如需在伴生对象中调用可通过在本类中定义对应的方法返回该属性值
  */
class StructDemo(val id: String, var name: String, age: Int) {
  private var address = ""
  println("调用了。。。" + age)

  // 定义一个供非本类调用的方法
  def getAge(): Int = {
    if (age > 30) 20 else 10
  }

  /**
    * 辅助构造器的名称为this,
    * 每个辅助构造器都必须调用一个此前已经定义的辅助构造器或主构造器
    * 一个类可以有多个辅助构造器
    */
  def this(id: String, name: String, age: Int, address: String) {
    this(id, name, age) // 辅助构造器第一行必须先调用主构造器
    this.address = address
  }
}

object StructDemo {
  def main(args: Array[String]): Unit = {
    val structDemo = new StructDemo("123", "hehe", 28)
    // structDemo.id = "1234" // val 修饰的不可修改
    println(structDemo.id + ",name:" + structDemo.name)
    structDemo.name = "bobo"
    println(structDemo.id + ",name:" + structDemo.name + ",age:" + structDemo.getAge())

    val hahaDemo = new StructDemo("123", "haha", 30, "I Love Scala ....")
    hahaDemo.name = "Hello"
    println(hahaDemo.id + ",name:" + hahaDemo.name + ",id:" + hahaDemo.id + ",address:" + hahaDemo.address)
  }

}

object testDemo {
  def main(args: Array[String]): Unit = {
    val structDemo = new StructDemo("123", "hehe", 28)
    // structDemo.id = "1234" // val 修饰的不可修改
    println("testDemo:" + structDemo.id + ",name:" + structDemo.name)
    structDemo.name = "bobo"
    println("testDemo:" + structDemo.id + ",name:" + structDemo.name + ",age:" + structDemo.getAge())
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值