-
Daxili siniflər hansılardır?
- İç-içə siniflər iki növə bölünür: statik və qeyri-statik.
- Statik olaraq elan edilən iç-içə siniflərə statik iç-içə siniflər deyilir.
- İç-içə qurulmuş statik olmayan siniflər daxili siniflər adlanır.
-
Anonim daxili sinif nə üçün tərtib edir?
Daxili qeyri-statik sinifə
-
final
Anonim siniflər yaratarkən niyə açar sözdən istifadə etməlisiniz ?Anonim daxili sinif müəyyən edilirsə və bu daxili sinifdən kənarda müəyyən edilmiş obyektlərdən istifadə etmək lazımdırsa, kompilyator onlara ötürülən istinadların dəyişməz (son) elan edilməsini tələb edir. Belə bir bəyannamə olmadan proqramı tərtib edərkən səhv alacaqsınız.
-
Daxili sinif obyektini necə düzgün yaratmaq olar?
Daxili (qeyri-statik) siniflər, dəyişənlər və metodlar kimi, xarici sinfin obyekti ilə əlaqələndirilir. Daxili siniflərin də xarici sinfin sahələrinə birbaşa çıxışı var. Belə siniflərdə statik metodlar və sahələr ola bilməz. Daxili siniflər xarici sinifin nümunəsi olmadan mövcud ola bilməz. Bir obyekt yaratmaq üçün:
Outer outer = new Outer(); Innter inner = outer.new Inner();
-
Yuvalanmış sinifin obyektini necə düzgün yaratmaq olar?
İç-içə sinif obyekti yaratmaq üçün sintaksis belədir:
OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
-
Daxili sinifdə statik metodlar/dəyişənlər yaratmaq mümkündürmü?
Statik metodlar/dəyişənlər daxili sinifdə elan edilə bilməz (iç-içə deyil).
Daxili (qeyri-statik) siniflər, dəyişənlər və metodlar kimi, xarici sinfin obyekti ilə əlaqələndirilir. Belə siniflərdə statik metodlar və sahələr ola bilməz.
-
Hər hansı üç daxili sinfi adlandırın?
private static class Holder
HashMap
--dan yuvalanmış sinifjava.util
.- İnterfeys yenidən var
Map
və başqa bir yuvalanmış sinifdə həyata keçirilir .interface Entry<K,V>
HashMap
static class Entry<K,V> implements Map.Entry<K,V>
private static class IntegerCache
sinifdəInteger
.
-
Daxili siniflər Java-da çoxlu varislik problemini necə həll edir?
Çünki Java-da siniflərin çoxsaylı varisliyi qadağandır, bu problem daxili siniflərin köməyi ilə həll olunur: bizə lazım olan sinifdə biz daxili sinif elan edirik və onu tələb olunan sinifdən miras alırıq. Misal:
class Tiger extends Cat { public void tigerRun() { ..... } public void startTiger() { TigerThread thread = new TigerThread(); thread.start(); } class TigerThread extends Thread { public void run() { tigerRun(); } } }
-
İnterfeys əsaslı və sinif əsaslı anonim siniflər arasında fərq nədir?
JLS 15.9.5-ə uyğun olaraq anonim sinif, yeni sinfin elanı və onun işə salınmasının birləşdirildiyi ifadədir:
- Bir sinf elan edərkən, başqa bir sinfin əsası kimi istifadə edildikdə göstərilən sinifdən əldə edilən və ya interfeysin əsası kimi istifadə edildikdə interfeysi həyata keçirən yeni bir sinif yaradılacaqdır.
- İnisializasiya zamanı yeni obyekt yaradılacaq və ona istinad qaytarılacaq: anonim sinif konkretdir.
Beləliklə, interfeys əsaslı və sinif əsaslı anonim siniflər arasındakı yeganə fərq, həyata keçirilməli olan mücərrəd metodların sayıdır.
Инициализации анонимного класса на основе интерфейса потребует реализации каждого метода, в то время How при инициализации анонимного класса на основе абстрактного/конкретного класса позволит изменить поведение за счет перегрузки методов и потребует реализации абстракных методов.
-
Можно ли создать анонимный статический вложенный класс?
Нет, статической становится только переменная, но не класс.
GO TO FULL VERSION