Junior
Көрүнүш модификаторлору эмне жана Kotlinде кандай колдонулат?
sobes.tech AI
AIден жооп
Kotlinдеги көрүнүштүүлөр өзгөрмөлөрү башка бөлүктөрү үчүн билдирүүлөрдүн (сыныптар, интерфейстер, функциялар, мүнөздөмөлөр) жеткиликтүүлүгүн аныктайт.
Негизги көрүнүштүүлөр өзгөрмөлөрү:
public: Ар жерде көрүнөт. Төлөмү боюнча белгиленет.internal: Жайгашкан модулдун ичинде гана көрүнөт. Модуль деп бирге компиляцияланган Kotlin файлдар топтому түшүнүлөт.protected: Синф жана анын муундарында көрүнөт (анын ичинде муундарда аныкталган мүчөлөр). Пакеттен тышкаркы көрүнбөйт.private: Тек гана аныкталган файлдын ичинде көрүнөт. Синф мүчөлөрү үчүн, бул синфтин ичинде гана көрүнөт (анын ичинде анын companion object, ички жана ички класстары).
Колдонуу учурлары:
- Синфтерде, интерфейстерде, объекттерде жана алардын конструкторлорунда.
- Функциялар, мүнөздөмөлөр жана алардын getter/setter'леринде жогорку деңгээлде (синфтерден тышкары).
- Синфтин мүчөлөрүндө (вложенные класстар, ички класстар, функциялар, мүнөздөмөлөр).
Мисал:
// Файл: example.kt
private const val PRIVATE_CONSTANT = 1 // Тек гана ушул файлда көрүнөт
internal fun internalFunction() { // Модульдүн ичинде гана көрүнөт
println("Ички функция")
}
open class BaseClass {
protected val protectedProperty = "Корголгон" // Бул класста жана анын муундарында көрүнөт
fun publicMethod() { // Ар жерде көрүнөт (public боюнча белгиленген)
println("Жалпы метод")
}
private fun privateMethod() { // Тек гана BaseClass ичинде көрүнөт
println("Жеке метод")
}
}
class DerivedClass : BaseClass() {
fun accessProtected() {
println("Корголгон мүнөздөмөгө жетүү: $protectedProperty") // Корголгонго жетүү
// privateMethod() // Каталар: private муундарда көрүнбөйт
}
}
fun main() {
val base = BaseClass()
base.publicMethod()
// base.protectedProperty // Каталар: protected тышкары көрүнбөйт
val derived = DerivedClass()
derived.accessProtected()
internalFunction()
// PRIVATE_CONSTANT // Каталар: private жогорку деңгээлде гана белгиленген файлда көрүнөт
}
| Модификатор | Жеткиликтүүлүк | Кайда колдонуу |
|---|---|---|
public |
Ар жерде | Төлөмү боюнча белгиленет, башка модификатор көрсөтүлбөсө |
internal |
Модуль ичинде | Китепкана же модуль API үчүн |
protected |
Синф жана анын муундарында (мүчөлөр үчүн) | Мурунку жана муундар түзүү үчүн |
private |
Файл ичинде (жогорку деңгээл); синф ичинде (мүчөлөр үчүн) | Ишке ашыруунун деталдарын жашыруу үчүн |