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") // წვდომა protected-ზე
// 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 |
ფაილში (ზედა დონეზე); კლასში (მხოლოდ წევრებისთვის) | დეტალების დამალვისთვის ფაილში ან კლასში |