import java.util.*
// Объявляем интерфейс с обобщенными функциями
interface Printable {
val value: Int
fun printValue()
}
// Реализуем интерфейс в ваших классах
data class A(override val value: Int) : Printable {
override fun printValue() {
println(value)
}
}
data class B(override val value: Int) : Printable {
override fun printValue() {
println(value)
}
}
fun main(args: Array<String>) {
val a = A(42)
val b = B(123)
a.printValue() // Выведет значение из A
b.printValue() // Выведет значение из B
}
aW1wb3J0IGphdmEudXRpbC4qCiAKIC8vINCe0LHRitGP0LLQu9GP0LXQvCDQuNC90YLQtdGA0YTQtdC50YEg0YEg0L7QsdC+0LHRidC10L3QvdGL0LzQuCDRhNGD0L3QutGG0LjRj9C80LgKaW50ZXJmYWNlIFByaW50YWJsZSB7CiAgICB2YWwgdmFsdWU6IEludAogICAgZnVuIHByaW50VmFsdWUoKQp9CgovLyDQoNC10LDQu9C40LfRg9C10Lwg0LjQvdGC0LXRgNGE0LXQudGBINCyINCy0LDRiNC40YUg0LrQu9Cw0YHRgdCw0YUKZGF0YSBjbGFzcyBBKG92ZXJyaWRlIHZhbCB2YWx1ZTogSW50KSA6IFByaW50YWJsZSB7CiAgICBvdmVycmlkZSBmdW4gcHJpbnRWYWx1ZSgpIHsKICAgICAgICBwcmludGxuKHZhbHVlKQogICAgfQp9CgpkYXRhIGNsYXNzIEIob3ZlcnJpZGUgdmFsIHZhbHVlOiBJbnQpIDogUHJpbnRhYmxlIHsKICAgIG92ZXJyaWRlIGZ1biBwcmludFZhbHVlKCkgewogICAgICAgIHByaW50bG4odmFsdWUpCiAgICB9Cn0KIApmdW4gbWFpbihhcmdzOiBBcnJheTxTdHJpbmc+KSB7CiAgICB2YWwgYSA9IEEoNDIpCiAgICB2YWwgYiA9IEIoMTIzKQoKICAgIGEucHJpbnRWYWx1ZSgpIC8vINCS0YvQstC10LTQtdGCINC30L3QsNGH0LXQvdC40LUg0LjQtyBBCiAgICBiLnByaW50VmFsdWUoKSAvLyDQktGL0LLQtdC00LXRgiDQt9C90LDRh9C10L3QuNC1INC40LcgQgogICAgCn0=