chapter05

/**
* 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
}






























}
原文地址:https://www.cnblogs.com/chenzechao/p/8671403.html