• 【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字符串插值

      

      

  • 相关阅读:
    python爬虫基础(requests、BeautifulSoup)
    python中字典按键、值进行排序
    进程和线程的区别
    MySQL中的索引
    python中浅拷贝和深拷贝的区别
    谈谈final、finally、finalize的区别
    python中布尔值是false
    生成器的阐释
    文件处理
    内置函数
  • 原文地址:https://www.cnblogs.com/lonelywolfmoutain/p/6700752.html
Copyright © 2020-2023  润新知