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() } } /** * 在scala中public修饰的 * 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+"]" } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |