-
Ichki sinflar qanday?
- Ichki sinflar ikki turga bo'linadi: statik va statik bo'lmagan.
- Statik deb e'lon qilingan ichki o'rnatilgan sinflar statik ichki o'rnatilgan sinflar deb ataladi.
- O'rnatilgan statik bo'lmagan sinflar ichki sinflar deb ataladi.
-
Anonim ichki sinf nima uchun kompilyatsiya qiladi?
Ichki statik bo'lmagan sinfga
-
final
Anonim sinflarni yaratishda nima uchun kalit so'zdan foydalanish kerak ?Agar anonim ichki sinf aniqlansa va u ushbu ichki sinfdan tashqarida aniqlangan ob'ektlardan foydalanishi kerak bo'lsa, kompilyator ularga berilgan havolalarni o'zgarmas (yakuniy) deb e'lon qilishni talab qiladi. Bunday deklaratsiyasiz dasturni kompilyatsiya qilishda siz xatoga yo'l qo'yasiz.
-
Qanday qilib ichki sinf ob'ektini to'g'ri yaratish kerak?
Ichki (statik bo'lmagan) sinflar, o'zgaruvchilar va usullar kabi, tashqi sinf ob'ekti bilan bog'langan. Ichki sinflar tashqi sinf sohalariga ham to'g'ridan-to'g'ri kirish huquqiga ega. Bunday sinflar statik usullar va maydonlarni o'z ichiga olmaydi. Ichki sinflar tashqi sinfning misolisiz mavjud bo'lolmaydi. Ob'ekt yaratish uchun:
Outer outer = new Outer(); Innter inner = outer.new Inner();
-
Ichki sinf ob'ektini qanday qilib to'g'ri yaratish kerak?
Ichki sinf ob'ektini yaratish sintaksisi:
OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
-
Ichki sinfda statik usullar/o'zgaruvchilar yaratish mumkinmi?
Statik usullar/o‘zgaruvchilarni ichki sinfda (ichiga o‘rnatilgan emas) e’lon qilib bo‘lmaydi.
Ichki (statik bo'lmagan) sinflar, o'zgaruvchilar va usullar kabi, tashqi sinf ob'ekti bilan bog'langan. Bunday sinflar statik usullar va maydonlarni o'z ichiga olmaydi.
-
Har qanday uchta ichki sinfni ayting?
private static class Holder
HashMap
-dan o'rnatilgan sinfjava.util
.- interfeysi
Map
borinterface Entry<K,V>
, qaysi yanaHashMap
va boshqa ichki sinfda amalga oshiriladistatic class Entry<K,V> implements Map.Entry<K,V>
. private static class IntegerCache
sinfdaInteger
.
-
Ichki sinflar Java-da bir nechta meros muammosini qanday hal qiladi?
Chunki Java-da bir nechta sinflarni meros qilib olish taqiqlanadi, bu muammo ichki sinflar yordamida hal qilinadi: bizga kerak bo'lgan sinfda biz ichki sinfni e'lon qilamiz va uni kerakli sinfdan meros qilib olamiz. Misol:
class Tiger extends Cat { public void tigerRun() { ..... } public void startTiger() { TigerThread thread = new TigerThread(); thread.start(); } class TigerThread extends Thread { public void run() { tigerRun(); } } }
-
Interfeysga asoslangan va sinfga asoslangan anonim sinflar o'rtasidagi farq nima?
JLS 15.9.5 ga muvofiq anonim sinf yangi sinf deklaratsiyasi va uning ishga tushirilishi birlashtirilgan ifodadir:
- Sinfni e'lon qilishda, boshqa sinfning asosi sifatida foydalanilganda ko'rsatilgan sinfdan kelib chiqadigan yoki interfeysning asosi sifatida foydalanilganda interfeysni amalga oshiradigan yangi sinf yaratiladi.
- Initsializatsiya paytida yangi ob'ekt yaratiladi va unga havola qaytariladi: anonim sinf aniq.
Shunday qilib, interfeysga asoslangan va sinfga asoslangan anonim sinflarning yagona farqi - bu amalga oshirilishi kerak bo'lgan mavhum usullarning soni.
Инициализации анонимного класса на основе интерфейса потребует реализации каждого метода, в то время How при инициализации анонимного класса на основе абстрактного/конкретного класса позволит изменить поведение за счет перегрузки методов и потребует реализации абстракных методов.
-
Можно ли создать анонимный статический вложенный класс?
Нет, статической становится только переменная, но не класс.
GO TO FULL VERSION