Call a helper that belongs to a class, not an instance.

companion A companion object stores functions or values tied to the class name.

Companion Object

amount
CompanionObject.kt
Replay: real traced execution (multi-file project)
class Tax {
    companion object {
        fun addFee(amount: Int): Int {
            return amount + 2
        }
    }
}

fun main() {
    val amount = 8
    val total = Tax.addFee(amount)

    println("amount=$amount")
    println("total=$total")
}
class Tax {
    companion object {
        fun addFee(amount: Int): Int {
            return amount + 2
        }
    }
}

fun main() {
    val amount = 3
    val total = Tax.addFee(amount)

    println("amount=$amount")
    println("total=$total")
}
class Tax {
    companion object {
        fun addFee(amount: Int): Int {
            return amount + 2
        }
    }
}

fun main() {
    val amount = 12
    val total = Tax.addFee(amount)

    println("amount=$amount")
    println("total=$total")
}
  1. amount ← 8

    9fun main() {10    val amount→ 8 = 8 //@amount=3, 1211    val total = Tax.addFee(amount8)
  2. fun addFee(amount: Int): Int

    2companion object {3    fun addFee(amount8: Int): Int {4        return amount8 + 25    }
  3. total ← 10

    10    val amount = 8 //@amount=3, 1211    val total→ 10 = Tax.addFee(amount8)1213    println("amount=$amount8")14    println("total=$total10")15}
    outputamount=8
    total=10
  1. amount ← 3

    9fun main() {10    val amount→ 3 = 311    val total = Tax.addFee(amount3)
  2. fun addFee(amount: Int): Int

    2companion object {3    fun addFee(amount3: Int): Int {4        return amount3 + 25    }
  3. total ← 5

    10    val amount = 311    val total→ 5 = Tax.addFee(amount3)1213    println("amount=$amount3")14    println("total=$total5")15}
    outputamount=3
    total=5
  1. amount ← 12

    9fun main() {10    val amount→ 12 = 1211    val total = Tax.addFee(amount12)
  2. fun addFee(amount: Int): Int

    2companion object {3    fun addFee(amount12: Int): Int {4        return amount12 + 25    }
  3. total ← 14

    10    val amount = 1211    val total→ 14 = Tax.addFee(amount12)1213    println("amount=$amount12")14    println("total=$total14")15}
    outputamount=12
    total=14