一、简单类和无参方法
class Counter{
private var value = 0
def increment(){value += 1} //改变对象状态的方法 使用()
def current = value //取值,不改变对象状态的方法, 不使用()
}
val c = new Counter
c.increment()
println(c.current) //直接获取值,不带()
结果
二、带getter和setter属性
// class Persion{
// var age = 0 //非private,可以使用getter和setter
// def current = age //如果age为private,可以自定义一个getter方法
// }
class Persion{
private var privateAge = 0
def age = privateAge //getter 方法 age
def age_=(newAge:Int) { //setter 方法 age_=
if(newAge>privateAge) privateAge = newAge
}
}
val f = new Persion
f.age = 30
f.age = 20
println(f.age)
结果
三、对象私有字段
四、Bean属性
import scala.beans.BeanProperty
class Persion{
@BeanProperty var age = 0
}
val p = new Persion
p.setAge(10)
println(p.getAge)
结果
五、辅助构造器
class Persion{
private var age = 0
private var name = ""
def this(name:String){ //辅助构造器
this() //调用主构造器
this.name = name
}
def this(name:String,age:Int){ //辅助构造器
this(name) //调用辅助构造器
this.age = age
}
}
val p = new Persion //主构造器
val p1 = new Persion("Tom") //辅助构造器
val p2 = new Persion("Tom",10) //辅助构造器
六、主构造器
class Persion(val name:String, val age:Int){ //主构造器的参数直接放置在类名之后
println("Hi") //主构造器会执行类定义中的所有语句
}
val p = new Persion("Tom",10)
七、嵌套类
参考《快学Scala》