Scala构造器介绍

和Java一样,scala构造对象也需要调用构造方法,并且scala中的构造器也支持重载。
scala类的构造器包括:主构造器辅构造器

scala构造器的基本语法

class 类名(形参列表) { // 主构造器
// 类体
def this(形参列表) { // 辅助构造器
}
def this(形参列表) { //辅助构造器可以有多个...
}
}

案例:

object ConDemo01 {
  def main(args: Array[String]): Unit = {

    var p1 = new Person("Bob", 10)
    println(p1)

    var p2 = new Person("Martin")
    println(p2)

    var p3 = new Person("Tom", 11, "Beijing")
    println(p3)
  }
}

//创建Person对象的同时,初始化对象的age属性值和name属性值

class Person(inName: String, inAge: Int) {
  var name: String = inName
  var age: Int = inAge

  override def toString: String = {
    "name:" + this.name + "\t age:" + this.age + "\t address:" + this.address
  }


  //定义辅助构造器:修改属性的初始值
  def this(name: String) {
    //辅助构造器必须在第一行显式调用主构造器(可以是直接,也可以是间接)
    this("jack", 20)
    //通过辅构造器重新赋值
    this.name = name
  }

  //定义辅助构造器:增加新属性,注意新的属性要先在辅助构造器外定义
  var address: String = _
  def this(inName: String, inAge: Int, address: String) {
    this(inName, inAge)
    this.address = address
  }

}

注意细节:

  1. Scala 构造器作用是完成对新对象的初始化,构造器没有返回值。
    主构造器的声明直接放置于类名之后

  2. 主构造器会执行类定义中的所有语句,这里可以体会到 Scala 的函数式编程和面向对象编程融合在一起,即:构造器也是方法(函数),传递参数和使用方法和前面的函数部分内容没有区别

  3. 如果想让主构造器变成私有的,可以在()之前加上 private,这样用户只能通过辅助构造器来构造对象了

  4. 关于参数:
    1)Scala 类的主构造器的形参未用任何修饰符修饰,那么这个参数是局部变量
    2)构造器参数用val关键字声明,那么 Scala 会将参数作为类的私有的只读属性使用
    3) 如果参数使用 var 关键字声明,那么 Scala 会将参数作为类的成员属性使用,并会提供属性对应的 xxx()[类似 getter]/xxx_$eq()[类似 setter]方法,即这时的成员属性是私有的,但是可读写。

补充:Bean 属性
给某个属性加入@BeanPropetry 注解后,会生成 getXXX 和 和 setXXX 的方法

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值