加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala学习之对类的理解

发布时间:2020-12-16 09:46:34 所属栏目:安全 来源:网络整理
导读:package com.lyzx.scalaLearn class Day0402 { def f1 (): Unit ={ val x1 = new X2 x1.age = 22 x1.age = 1 x1.age_=( 99 ) println (x1.age) } def f2 (){ val x = new X2( 34 ) println (x.age) val x2 = new X2( 24 , " 李耀辉 " ) println (x2) } def f
package com.lyzx.scalaLearn

class Day0402 {


  def f1(): Unit ={
    val x1 = new X2

    x1.age = 22
    x1.age = 1

    x1.age_=(99)

    println(x1.age)
  }

  def f2(){
    val x = new X2(34)
    println(x.age)
    val x2 = new X2(24,"李耀辉")
    println(x2)
  }

  def f3(): Unit ={
    val lang = new X_Man("金刚狼","金刚不坏神功")
    println(lang)
    lang.ability="快速回复..."
    println(lang)

    val x3 = new X3("鸣人",27)

    println(x3)
  }
}

object Day0402{

  def main(args: Array[String]): Unit = {
      val t = new Day0402
//      t.f1()
//      t.f2()
      t.f3()
  }
}


/**  * scalapublic修饰的  * var 会生成对应的getter/setter  * val 会生成对应的getter  */ class X2{
  private var prevAge = 0
  private var name =""
  def age = prevAge  def age_=(newAge:Int){if(newAge > prevAge) prevAge = newAge}

  //这是一个辅助构造器
  def this(age:Int){
    this()
    prevAge = age
  }
  def this(age:Int,_name:String){
    this(age)
    name = _name
  }
  override def toString: String = {
    "[name="+name+",age="+prevAge+"]"
  }
}


//X_Man后面的是主构造器,其中的参数会被编译为字段
//如果是var修饰就生成getter/setter
//如果是val修饰或者默认 就生成getter
case class X_Man(name:String,var ability:String){
    println("一个X-Man被构造...啦啦啦")

    def recovery(): Unit ={
      println("满血复活...")
    }

    def desc = "name:"+name+" 能力:"+ability
    val descStr = "name:"+name+" 能力:"+ability
}


//主构造器中可以添加private val来修饰一个属性
class X3(name:String,private val age:Int){
  override def toString: String = {
    "[name="+name+",age="+age+"]"
}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读