import kotlin.reflect.KProperty
fun main(args : Array<String>){
val animal = Animal()
animal.name = "Hello Cat"
animal.weight = 7.2
animal.age = 1
println("Nama: ${animal.name}")
println("Berat: ${animal.weight}")
println("Umur: ${animal.age} Tahun")
}
class DelegateGenericClass {
private var value: Any = "Default"
operator fun getValue(classRef: Any, property: KProperty<*>): Any {
println("Fungsi ini sama seperti getter untuk properti ${property.name} pada class $classRef")
return value
}
operator fun setValue(classRef: Any, property: KProperty<*>, newValue: Any) {
println("Nilai ${property.name} dari: $value akan berubah menjadi $newValue")
value = newValue
}
}
class Animal {
var name: Any by DelegateGenericClass()
var weight: Any by DelegateGenericClass()
var age: Any by DelegateGenericClass()
}