Junior
Java dasturlash kontekstida ko'rinish nima?
sobes.tech AI
AIdan javob
Java kontekstida ko‘rishlilik (shuningdek, ko‘rish doirasi deb ham ataladi) o‘zgaruvchi, metod, konstruktor yoki sinfga dasturning boshqa qismlaridan kirish imkoniyatini belgilaydi. Bu kirish modifikatorlari bilan boshqariladi.
Java’da to‘rt darajadagi ko‘rishlilik mavjud:
public: Paket ichida va tashqarisida har joydan kirish mumkin.protected: Xuddi shuningdek, paket ichida va subclasslarda (hatto boshqa paketlarda ham) kirish mumkin.- Standart rejim (default yoki package-private): Faqatgina xuddi shuningdek, paket ichida kirish mumkin. Aniq modifikator bilan ko‘rsatilmaydi.
private: Faqatgina xuddi shuningdek, sinf ichida kirish mumkin.
| Modifikator | Sinf | Paket | Subklass (paket tashqarisida) | Har qanday sinf (paket tashqarisida) |
|---|---|---|---|---|
public |
Ha | Ha | Ha | Ha |
protected |
Ha | Ha | Ha | Yo‘q |
| Default | Ha | Ha | Yo‘q | Yo‘q |
private |
Ha | Yo‘q | Yo‘q | Yo‘q |
Ko‘rish modifikatorlaridan foydalanish, inkapsulyatsiya va dastur elementlariga kirishni nazorat qilishda muhim rol o‘ynaydi.
Misol uchun, ko‘rish modifikatorlaridan foydalanish:
// com.example.package1 paketidagi A sinfi
package com.example.package1;
public class ClassA {
public int publicVar;
protected int protectedVar;
int defaultVar; // Standart modifikator
private int privateVar;
public void publicMethod() {
// ClassA sinfidagi barcha o‘zgaruvchilarga kirish mumkin
System.out.println("ClassA ichidagi umumiy metod");
}
protected void protectedMethod() {
System.out.println("ClassA ichidagi himoyalangan metod");
}
void defaultMethod() {
System.out.println("ClassA ichidagi standart metod");
}
private void privateMethod() {
System.out.println("ClassA ichidagi shaxsiy metod");
}
public void accessMembers() {
publicVar = 1;
protectedVar = 2;
defaultVar = 3;
privateVar = 4; // OK, sinf ichida kirish
privateMethod(); // OK, sinf ichida kirish
}
}
// B sinfi, xuddi shuningdek, com.example.package1 paketida
package com.example.package1;
public class ClassB {
public void accessClassAMembers(ClassA objA) {
objA.publicVar = 10; // OK, umumiy
objA.protectedVar = 20; // OK, himoyalangan (xuddi shuningdek, paket)
objA.defaultVar = 30; // OK, standart (xuddi shuningdek, paket)
// objA.privateVar = 40; // Kompilatsiya xatosi, shaxsiy
objA.publicMethod(); // OK, umumiy
objA.protectedMethod(); // OK, himoyalangan (xuddi shuningdek, paket)
objA.defaultMethod(); // OK, standart (xuddi shuningdek, paket)
// objA.privateMethod(); // Kompilatsiya xatosi, shaxsiy
}
}
// C sinfi, boshqa paketda, com.example.package2
package com.example.package2;
import com.example.package1.ClassA;
public class ClassC extends ClassA { // ClassC, ClassA ning subclassi
public void accessClassAMembersFromSubclass() {
publicVar = 100; // OK, umumiy
protectedVar = 200; // OK, himoyalangan (subklass, hatto boshqa paketda)
// defaultVar = 300; // Kompilatsiya xatosi, standart (boshqa paket)
// privateVar = 400; // Kompilatsiya xatosi, shaxsiy
publicMethod(); // OK, umumiy
protectedMethod(); // OK, himoyalangan (subklass, hatto boshqa paketda)
// defaultMethod(); // Kompilatsiya xatosi, standart (boshqa paket)
// privateMethod(); // Kompilatsiya xatosi, shaxsiy
}
}
// D sinfi, boshqa paketda, com.example.package2 (ClassA ning subclassi emas)
package com.example.package2;
import com.example.package1.ClassA;
public class ClassD {
public void accessClassAMembers(ClassA objA) {
objA.publicVar = 1000; // OK, umumiy
// objA.protectedVar = 2000; // Kompilatsiya xatosi, himoyalangan (boshqa paket, subclass emas)
// objA.defaultVar = 3000; // Kompilatsiya xatosi, standart (boshqa paket)
// objA.privateVar = 4000; // Kompilatsiya xatosi, shaxsiy
objA.publicMethod(); // OK, umumiy
// objA.protectedMethod(); // Kompilatsiya xatosi, himoyalangan (boshqa paket, subclass emas)
// objA.defaultMethod(); // Kompilatsiya xatosi, standart (boshqa paket)
// objA.privateMethod(); // Kompilatsiya xatosi, shaxsiy
}
}
Ko‘rishlilikni tushunish, yanada ishonchli va modulli kod yozishga yordam beradi, sinflarning ichki tafsilotlariga ruxsatsiz kirishni cheklash orqali.