Middle
Kotlinде класс ичиндеги объект менен кошо турган объекттин айырмасы эмнеде?
sobes.tech AI
AIден жооп
Класс ичиндеги inner object тышкы классдын үлгүсүнө байланыштуу жана анын жашоо циклинин ичинде гана бар болот. companion object — singleton катары иштейт, класс үлгүсүнө байланыштуу эмес жана түз эле класс аталышы аркылуу жеткиликтүү.
Негизги айырмачылыктар:
- Үлгү менен байланыш:
inner objectтышкы класс үлгүсүнө байланыштуу,companion object— байланышсыз. - Жеткиликтүүлүк:
inner objectке тек тышкы класс үлгүсү аркылуу гана жетүүгө болот,companion object— түз эле класс аталышы аркылуу. - Абалы:
inner objectөзгөчө үлгүгө тиешелүү абалга ээ болушу мүмкүн,companion object— бүт класска жалпы. - Колдонуу:
inner objectкөбүнчө State паттернин ишке ашыруу үчүн же байланышкан объекттерди үлгү ичинде топтоо үчүн колдонулат.companion objectфабрика ыкмалары, константалар же статикалык мүчөлөр үчүн колдонулат.
Мисал:
class Outer {
private var outerValue: Int = 0
inner object InnerObject {
fun accessOuterValue(): Int {
return outerValue // inner object тышкы класстын мүчөлөрүнө жеткиликтүү
}
}
companion object CompanionObject {
const val CONSTANT = "Some constant"
fun createOuter(): Outer {
return Outer() // фабрика ыкмасы
}
}
}
fun main() {
val outer = Outer.CompanionObject.createOuter() // companion objectке жетүү
// val inner = Outer.InnerObject // Ката: Outer үлгүсү жок болсо InnerObjectке жетүү мүмкүн эмес
val inner = outer.InnerObject // үлгү аркылуу ички объектке жетүү
println(inner.accessOuterValue())
println(Outer.CompanionObject.CONSTANT)
println(Outer.CONSTANT) // синтаксистик татымал — CompanionObject мүчөлөрүнө жетүү
}