Sobes.tech
Junior — Middle

არის თუ არა ობიექტ-კომპანიონი საერთო ყველა შექმნილი კლასის ნიმუშისთვის?

sobes.tech AI

პასუხი AI-სგან

Այո, Kotlin-ում companion object (հատկանիշ-օբյեկտ) ընդհանուր է բոլոր օրինակների համար։ Դա մի տեսակ singleton է, որը կապված է դասի հետ, ոչ թե կոնկրետ նրա օրինակների հետ։

Companion object-ը թույլ է տալիս սահմանել ֆունկցիաներ և հատկություններ, որոնք կարելի է կանչել առանց դասի օրինակ ստեղծելու, նման Java-ի static մեթոդների և դաշտերի:

Օրինակ՝

class MyClass {
    companion object {
        val sharedValue = 42
        fun printValue() {
            println("Կիսված արժեքը: $sharedValue")
        }
    }
}

fun main() {
    println(MyClass.sharedValue) // 42
    MyClass.printValue()        // Կիսված արժեքը: 42
}

Այստեղ sharedValue և printValue ընդհանուր են բոլոր MyClass օրինակների համար։