Extensions allow you to add Properties and Methods to an existing Class.
Extension is declared by simply placing Class name before the Field/Property/Method name Person.sayHello().
Unfortunately Extension Property
● must be declared inside Class Scope (can't be added inside a Method)
● can't have Backing Field so you can't use Keyword field inside it (use Backing Properties to store data)
Extension Properties & Methods
//===========================================================================================================
// CLASS: Person
//===========================================================================================================
class Person {
//DECLARE PROPERTIES.
var name : String = ""
//CONSTRUCTOR.
constructor(name: String) { this.name = name }
}
//===========================================================================================================
// CLASS: Soldier
//===========================================================================================================
class Soldier {
//ADD EXTENSION PROPERTY.
val Person.greet : String
get() { return "Hello $name" } //REFERENCE name FROM EXTENDED CLASS.
//ADD EXTENSION METHOD.
fun Person.sayHello () {
print("Hello $name") //REFERENCE name FROM EXTENDED CLASS.
}
//TEST METHOD.
fun test() {
var john = Person("John")
println(john.greet) //CALL EXTENSION PROPERTY.
john.sayHello() //CALL EXTENSION METHOD.
}
}
//===========================================================================================================
// FUNCTION: main
//===========================================================================================================
fun main() {
var soldier = Soldier()
soldier.test()
}