Require a property through an interface.

interface Interfaces can require properties as well as functions.

Interface Properties

cents
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")
}
  1. 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
  1. 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
  1. 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