Middle
Kotlin-də sinif daxilində obyekt və obyekt yoldaşı arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Klass daxilində inner object xarici klassın nümunəsinə bağlıdır və yalnız onun həyat dövrü ərzində mövcuddur. companion object isə singleton kimi mövcuddur, klassın nümunəsinə bağlı deyil və birbaşa klass adından əldə edilə bilər.
Əsas fərqlər:
- Nümunəyə bağlılıq:
inner objectxarici klassın nümunəsinə bağlıdır,companion objectbağlı deyil. - Əlçatanlıq:
inner object-ə yalnız xarici klassın nümunəsi vasitəsilə daxil olmaq mümkündür,companion object-ə isə birbaşa klass adı ilə. - Vəziyyət:
inner objectnümunəyə xas vəziyyətə sahib ola bilər,companion objectisə bütün klass üçün ümumi. - İstifadə:
inner objectçox vaxt State şablonunun həyata keçirilməsi və ya əlaqəli obyektlərin nümunə daxilində qruplaşdırılması üçün istifadə olunur.companion objectfabrik metodları, sabitlər və ya statik üzvlər üçün istifadə olunur.
Nümunə:
class Outer {
private var outerValue: Int = 0
inner object InnerObject {
fun accessOuterValue(): Int {
return outerValue // inner object xarici klassın üzvlərinə daxil ola bilər
}
}
companion object CompanionObject {
const val CONSTANT = "Some constant"
fun createOuter(): Outer {
return Outer() // fabrik metodu
}
}
}
fun main() {
val outer = Outer.CompanionObject.createOuter() // companion object-ə giriş
// val inner = Outer.InnerObject // Xəta: Outer nümunəsi olmadan InnerObject-ə daxil olmaq mümkün deyil
val inner = outer.InnerObject // nümunə vasitəsilə inner obyektə giriş
println(inner.accessOuterValue())
println(Outer.CompanionObject.CONSTANT)
println(Outer.CONSTANT) // sintaktik şəkər: CompanionObject üzvlərinə giriş
}