Middle
Kotlin'da sinf ichidagi ob'ekt va ob'ekt hamkori o'rtasidagi farq nima?
sobes.tech AI
AIdan javob
Klass ichidagi ichki obyekt (inner object) tashqi klassning nusxasiga bog'langan bo'lib, uning hayot aylanishi davomida mavjud bo'ladi. Hamkor obyekt (companion object) singleton sifatida mavjud bo'lib, klass nusxasiga bog'liq emas va to'g'ridan-to'g'ri klass nomi orqali kirish mumkin.
Asosiy farqlar:
- Nusxaga bog'liqlik:
inner objecttashqi klass nusxasiga bog'langan,companion objectbog'liq emas. - Kirish:
inner objectga faqat tashqi klass nusxasi orqali kirish mumkin,companion objectesa to'g'ridan-to'g'ri klass nomi bilan kiriladi. - Holat:
inner objectnusxaga xos holatga ega bo'lishi mumkin,companion objectesa butun klass uchun umumiy. - Foydalanish:
inner objectodatda State shabloni uchun yoki bog'liq obyektlarni nusxa ichida guruhlash uchun ishlatiladi.companion objectishlab chiqarish metodlari, konstantalar yoki statik a'zolar uchun ishlatiladi.
Misol:
class Outer {
private var outerValue: Int = 0
inner object InnerObject {
fun accessOuterValue(): Int {
return outerValue // inner object tashqi klass a'zolariga kirish huquqiga ega
}
}
companion object CompanionObject {
const val CONSTANT = "Some constant"
fun createOuter(): Outer {
return Outer() // ishlab chiqarish metodi
}
}
}
fun main() {
val outer = Outer.CompanionObject.createOuter() // hamkor obyektiga kirish
// val inner = Outer.InnerObject // Xato: Outer nusxasi bo'lmasdan InnerObject ga kirish mumkin emas
val inner = outer.InnerObject // nusxa orqali inner obyektga kirish
println(inner.accessOuterValue())
println(Outer.CompanionObject.CONSTANT)
println(Outer.CONSTANT) // sintaktik shakar hamkor obyekt a'zalariga kirishni osonlashtiradi
}