【scala】 scala 类 (五)

1、scala类

  1.class 关键字

  2.var 属性 默认生成getter/setter 方法

  3.val 属性 默认生成getter 方法

  4. 自定义getter /setter 方法 , property 和 proeprty_ 方法来表示 getter 和setter方法

  5. 主构造函数 和辅构造函数的定义使用

  6.使用 @BeanProperty 来生成 getter/setter方法

  7. 重写toString 方法 ,利用scala字符串插值来格式化输出

  

 

import scala.beans.BeanProperty

/**
  * @author xwolf
  * @date 2017-04-12 16:52
  * @since 1.8
  */
class Person {

  var age:Int=0 //直接定义属性
  var name:String=""

  val hello:String="hello"

  private var initState:Int=0

  @BeanProperty var  gender:Int=0 //性别

  def this(name :String){ //辅助构造器
    this() // 主构造器
    this.name=name
  }

  def this(name:String,age:Int){ //辅助构造器
    this(name)
    this.age=age
  }

  def state=initState  //getter 方法
  def state_=(newState:Int): Unit ={  //setter 方法
     initState=newState
  }

  def check(age:Int):Boolean={
    if (age<0 || age>150) false else true
  }

  //override 重写toString 方法
  //s 是字符串插值;Scala 提供了三种创新的字符串插值方法:s,f 和 raw
  override def toString = s"Person($age, $name)"
}

 

测试类:

/**
  * @author xwolf
  * @date 2017-04-12 16:40
  * @since 1.8
  */
object Clazz {

  def main(args: Array[String]): Unit = {
    // 创建对象
    val person = new Person
    person.age = -21
    person.name="Hello"
    println(person.hello)

    val check= person.check(person.age)
    if (!check) println("年龄不合法") else println(person)
    person.state=12
    println(person.state)
    //通过构造器创建对象
    val cperson =new Person("老万")
    println(cperson)

    val dperson = new Person("万里云",10)
    println(dperson)

    //@BeanProperty 访问
    person.setGender(1)
    println(person.getGender)


  }

}

 

参考资料:

 scala字符串插值

  

  

posted @ 2017-04-12 18:33  snow__wolf  阅读(177)  评论(0编辑  收藏  举报