scala scala 类

Posted xwolf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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字符串插值

  

  

以上是关于scala scala 类 的主要内容,如果未能解决你的问题,请参考以下文章

在Scala项目中使用Spring Cloud

scala编程——函数和闭包

Scala附加列表

详解 Scala 模式匹配

Scala中的“不封闭类”是啥意思

pyspark对应的scala代码PythonRDD类