Mavzu: ichma-ich joylashgan sinflar


Outer - ichki sinf Inner e'lon qilingan tashqi sinf nomi; Inner


Download 99.85 Kb.
bet2/6
Sana18.06.2023
Hajmi99.85 Kb.
#1577834
1   2   3   4   5   6
Bog'liq
ICHMA-ICH JOYLASHGAN SINFLAR.

Outer - ichki sinf Inner e'lon qilingan tashqi sinf nomi;
Inner - Outer sinfining figurali qavslari ichida e'lon qilingan ichki o'rnatilgan sinf nomi;
objInner - yaratilayotgan sinf ob'ekti (namunasi) nomi;
Outer.Inner() - bu sinf ob'ektini yaratish uchun chaqiriladigan standart konstruktorning nomi. Agar Inner sinfida boshqa parametrlangan konstruktorlar amalga oshirilsa, bu chaqiruv boshqacha bo'lishi mumkin.


2. Turli xil kirish modifikatorlari bilan sinflardan foydalanishni ko'rsatadigan misol
Ichki o'rnatilgan sinflar odatdagi ichki o'rnatilmagan sinflar bilan bir xil kirish modifikatorlariga ega bo'lishi mumkin:
private. Bunday holda, ichki sinf tashqi sinfning figurali qavslari ichida ko'rinadi { };
public. Bunday holda, ichki o'rnatilgan sinfga tashqi sinf ichida, tashqi sinf namunasidan, meros qilib olingan sinfdan va o`rnatilgan sinfdan tashqarida kirish mumkin;
protected. Bunday holda, sinf tashqi sinf ichida ham, meros qilib olingan sinflar usullaridan ham mavjud;
internal. Ichki sinf to`plam ichida mavjud va to`plamdan tashqarida mavjud emas;
protected internal. Ichki sinfga tashqi sinf usullaridan, meros qilib olingan sinflar usullaridan kirish mumkin yoki joriy to`plamdan tashqari usullardan kirish mumkin emas.
Modifikatorlarning harakati sinfning ma'lumotlar a'zolari (usullari) bilan bir xil.
Turli xil kirish modifikatorlari bilan sinflardan foydalanishni ko'rsatadigan misol. Misolda turli xil kirish modifikatorlarini o'z ichiga olgan ichki o'rnatilgan sinflarga deklaratsiya va kirishni ko'rsatadi.
Outer sinfi e'lon qilinadi, unda quyidagilar mavjud:
d va sd nomli ikkita ichki pu_blic o'zgaruvchilari. sd o'zgaruvchisi statik deb e'lon qilinadi;
Inner1 xususiy sinfiga kirishni namoyish qiluvchi ichki GetInner1() usuli;
private sifatida e'lon qilingan ichki sinf Inner1;
public deb e'lon qilingan ichki sinf Inner2;
internal sifatida e'lon qilingan ichki sinf Inner3;
protected deb e'lon qilingan ichki sinf Inner4;
protected internal sifatida e'lon qilingan ichki sinf Inner5.
Ichki o'rnatilgan sinflarning har qandayida e'lon qilinadi:
butun son tipidagi bitta statik bo'lmagan o'zgaruvchi;
butun son tipidagi bitta statik o'zgaruvchi.
Outer sinfining ro'yxati quyidagicha:
// Outer sinfida 5 ta ichki sinf mavjud
public class Outer
{
// Outer sinfining ichki o'zgaruvchilari
public int d;
static public int sd;
// ichki sinf usulidan Inner1 private sinfiga kirish
public Inner1 GetInner1()
{
Inner1 i1 = new Inner1(); // Inner1 sinfining namunasini yaratish
// sinf namunasi orqali Inner1 sinfining ma'lumotlar a'zosiga kirish
i1.d1 = 25;
// Inner1 ichki sinfining statik a'zosiga kirish
Inner1.sd1 = 30;
return i1;
}
// private - ichki o'rnatilgan sinf Inner1
private class Inner1
{
public int d1;
public static int sd1;
}
// public - ichki sinf Inner2
public class Inner2
{
public int d2;
public static int sd2;
}
// internal - ichki sinf Inner3
internal class Inner3
{
public int d3;
public static int sd3;
}
// protected - ichki sinf Inner4
protected class Inner4
{
public int d4;
public static int sd4;
}
// protected-internal ichki sinfi Inner5
protected internal class Inner5
{
public int d5;
public static int sd5;
}
}

Ba'zi usullarda ichki o'rnatilgan sinflardan foydalanish quyidagicha bo'lishi mumkin:


// Outer.Inner1, Outer.Inner2, Outer ichki sinflardan foydalanish
// 1. Outer sinfining ob'ektini e'lon qilish
Outer o = new Outer();
o.d = 300; // Outer sinfining namunasi orqali ichki o'zgaruvchiga kirish
Outer.sd = 230; // statik o'zgaruvchiga kirish
// 2. Ou_ter sinfi misoli orqali Inner1 priva_te sinfiga kirish imkoni yo'q
// Outer.Inner1 i1; - xato, Inner1 sinfi private deb e'lon qilindi
// 3. Inner2 public sinfi ob'ektini e'lon qilish
Outer.Inner2 i2 = new Outer.Inner2();
i2.d2 = 440;
Outer.Inner2.sd2 = 500; // statik o'zgaruvchiga kirish
// 4. Inner3 internal sinfi ob'ektini e'lon qilish
Outer.Inner3 i3 = new Outer.Inner3();
i3.d3 = 100;
Outer.Inner3.sd3 = 400; // statik o'zgaruvchiga kirish
// 5. protected-sinf ob'ektini faqat meros qilib olingan sinflardan e'lon qilishingiz mumkin
// Outer.Inner4 i4; - xato
// 6. protected-internal sinfi ob'ektini e'lon qilishingiz mumkin
Outer.Inner5 i5 = new Outer.Inner5();
i5.d5 = 200;
Outer.Inner5.sd5 = -100;

Yuqoridagi koddan ko'rinib turibdiki, siz faqat Inner2, Inner3, Inner5 sinflari uchun ob'ektlar yaratishingiz mumkin. protected sinf Inner4 ob'ektini yaratish uchun siz Outer sinfini meros qilib oladigan boshqa sinfni e'lon qilishingiz kerak, masalan:


// Outer2 sinfi Outer sinfidan meros qilib olingan.
class Outer2 : Outer
{
// meros qilib olingan sinf usulida protected Inner4 sinfiga kirish imkoniyati mavjud
void SomeMethod()
{
// Outer.Inner4 sinfining namunasini yaratish.
Inner4 i4 = new Inner4(); // ishlaydi
i4.d4 = 23; // sinf namunasi orqali kirish
Inner4.sd4 = 330; // statik o'zgaruvchiga kirish
}
}

Ushbu misol shuningdek, ichki o'rnatilgan private sinfi unda e'lon qilingan statik o'zgaruvchiga kirishni boshqa sinflar usullaridan yashirishini ko'rsatadi. Shuningdek, u kirishni va o'rnatilgan protected sinfini yashiradi.





Download 99.85 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling