Properties and Encapsulation
Private State
Hide stored data and expose a safe result.
private
Private state can be used inside a class without being exposed directly.
Private State
PrivateState.kt
Replay: real traced execution (multi-file project)
class Wallet(private val cents: Int) {
fun dollars(): Int {
return cents / 100
}
}
fun main() {
val cents = 250
val wallet = Wallet(cents)
val dollars = wallet.dollars()
println("cents=$cents")
println("dollars=$dollars")
}
class Wallet(private val cents: Int) {
fun dollars(): Int {
return cents / 100
}
}
fun main() {
val cents = 99
val wallet = Wallet(cents)
val dollars = wallet.dollars()
println("cents=$cents")
println("dollars=$dollars")
}
class Wallet(private val cents: Int) {
fun dollars(): Int {
return cents / 100
}
}
fun main() {
val cents = 430
val wallet = Wallet(cents)
val dollars = wallet.dollars()
println("cents=$cents")
println("dollars=$dollars")
}
cents ← 250
7fun main() {8 val cents→ 250 = 250 //@cents=99, 4309 val wallet = Wallet(cents250)10 val dollars = wallet.dollars()fun dollars(): Int
1class Wallet(private val cents: Int) {2 fun dollars(): Int {3 return cents250 / 1004 }dollars ← 2
9 val wallet = Wallet(cents)10 val dollars→ 2 = wallet.dollars()1112 println("cents=$cents250")13 println("dollars=$dollars2")14}outputcents=250 dollars=2
cents ← 99
7fun main() {8 val cents→ 99 = 999 val wallet = Wallet(cents99)10 val dollars = wallet.dollars()fun dollars(): Int
1class Wallet(private val cents: Int) {2 fun dollars(): Int {3 return cents99 / 1004 }dollars ← 0
9 val wallet = Wallet(cents)10 val dollars→ 0 = wallet.dollars()1112 println("cents=$cents99")13 println("dollars=$dollars0")14}outputcents=99 dollars=0
cents ← 430
7fun main() {8 val cents→ 430 = 4309 val wallet = Wallet(cents430)10 val dollars = wallet.dollars()fun dollars(): Int
1class Wallet(private val cents: Int) {2 fun dollars(): Int {3 return cents430 / 1004 }dollars ← 4
9 val wallet = Wallet(cents)10 val dollars→ 4 = wallet.dollars()1112 println("cents=$cents430")13 println("dollars=$dollars4")14}outputcents=430 dollars=4