
/**
* Created by EX-CHENZECHAO001 on 2018-03-29.
*/
class Chapter05 {
}
// 类
// 类中的字段自动带有getter方法和setter方法
// 5.1 简单类和无参方法
class Counter {
private var value = 0 // 必须初始化字段
def increment(): Unit ={ // 方法默认是仅有的
value += 1
}
def current() = value // 用时可用()也可不用counter.current()
def currentNew = value // 用时不可用() counter.currentNew
}
// 5.2 带getter和setter的属性
class Person {
var age = 0
}
object Person {
val person = new Person()
println(person.age) // getter方法
person.age = 10
println(person.age) // getter方法
}
class Person2 {
private var privateAge = 0
// 变成私有并改名
def age = privateAge
def age_=(newValue: Int): Unit = {
if (newValue > privateAge) {
privateAge = newValue
}
}
}
object Person2 {
val person2 = new Person2()
person2.age_=(20)
println(person2.age)
person2.age_=(11)
println(person2.age)
}
// 如果字段是私有的,则getter和setter方法也是私有的
// 如果字段是val,则只有getter方法被生成
// 如果不需要任何getter或setter,可以将字段声明为private[this]
// 5.3 只带getter的属性
class Message {
// scala会生成一个私有的final字段和一个getter方法,但没有setter方法
val timeStamp = new java.util.Date().getTime
// 实现属性的4个选择
// var foo: Scala自动合成一个getter和setter
// val foo: Scala自动合成一个getter
// 由你定义foo和foo_=方法
// 由你来定义foo方法
}
object Chapter05 {
def main(args: Array[String]): Unit = {
val counter = new Counter()
counter.increment()
counter.increment()
counter.increment()
println(counter.current())
println(counter.currentNew)
Person2
}
}