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+"]"
}
}
《scala函数式编程》之对类的理解
最新推荐文章于 2022-01-06 22:06:12 发布