Inheritance and Interfaces
Interface Properties
Require a property through an interface.
interface
Interfaces can require properties as well as functions.
Interface Properties
InterfaceProperties.kt
Replay: real traced execution (multi-file project)
interface Priced {
val cents: Int
}
class Item(override val cents: Int) : Priced
fun main() {
val cents = 250
val item = Item(cents)
val dollars = item.cents / 100
println("cents=$cents")
println("dollars=$dollars")
}
interface Priced {
val cents: Int
}
class Item(override val cents: Int) : Priced
fun main() {
val cents = 99
val item = Item(cents)
val dollars = item.cents / 100
println("cents=$cents")
println("dollars=$dollars")
}
interface Priced {
val cents: Int
}
class Item(override val cents: Int) : Priced
fun main() {
val cents = 430
val item = Item(cents)
val dollars = item.cents / 100
println("cents=$cents")
println("dollars=$dollars")
}
cents ← 250, dollars ← 2
7fun main() {8 val cents→ 250 = 250 //@cents=99, 4309 val item = Item(cents250)10 val dollars→ 2 = item.cents250 / 1001112 println("cents=$cents250")13 println("dollars=$dollars2")14}outputcents=250 dollars=2
cents ← 99, dollars ← 0
7fun main() {8 val cents→ 99 = 999 val item = Item(cents99)10 val dollars→ 0 = item.cents99 / 1001112 println("cents=$cents99")13 println("dollars=$dollars0")14}outputcents=99 dollars=0
cents ← 430, dollars ← 4
7fun main() {8 val cents→ 430 = 4309 val item = Item(cents430)10 val dollars→ 4 = item.cents430 / 1001112 println("cents=$cents430")13 println("dollars=$dollars4")14}outputcents=430 dollars=4