Mavzu: ichma-ich joylashgan sinflar
Outer - ichki sinf Inner e'lon qilingan tashqi sinf nomi; Inner
Download 99.85 Kb.
|
ICHMA-ICH JOYLASHGAN SINFLAR.
- Bu sahifa navigatsiya:
- 2. Turli xil kirish modifikatorlari bilan sinflardan foydalanishni korsatadigan misol
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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling