-
Apakah kelas dalaman?
- Kelas bersarang dibahagikan kepada dua jenis: statik dan bukan statik.
- Kelas bersarang yang diisytiharkan sebagai statik dipanggil kelas bersarang statik.
- Kelas bukan statik bersarang dipanggil kelas dalam.
-
Untuk apa kelas dalaman tanpa nama dikompilasi?
Kepada kelas bukan statik dalaman
-
Mengapa menggunakan kata kunci
final
semasa membuat kelas tanpa nama?Jika kelas dalam tanpa nama ditakrifkan dan ia perlu menggunakan objek yang ditakrifkan di luar kelas dalam ini, pengkompil memerlukan rujukan yang dihantar kepada mereka diisytiharkan tidak boleh diubah (muktamad). Tanpa pengisytiharan sedemikian, anda akan menerima ralat semasa menyusun atur cara.
-
Bagaimana cara membuat objek kelas dalam dengan betul?
Kelas dalam (bukan statik), seperti pembolehubah dan kaedah, dikaitkan dengan objek kelas luar. Kelas dalaman juga mempunyai akses terus ke medan kelas luar. Kelas sedemikian tidak boleh mengandungi kaedah dan medan statik. Kelas dalaman tidak boleh wujud tanpa contoh kelas luar. Untuk mencipta objek:
Outer outer = new Outer(); Innter inner = outer.new Inner();
-
Bagaimana untuk mencipta objek kelas bersarang dengan betul?
Sintaks untuk mencipta objek kelas bersarang ialah:
OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
-
Adakah mungkin untuk mencipta kaedah/pembolehubah statik dalam kelas dalaman?
Kaedah/pembolehubah statik tidak boleh diisytiharkan dalam kelas dalaman (bukan kelas bersarang).
Kelas dalam (bukan statik), seperti pembolehubah dan kaedah, dikaitkan dengan objek kelas luar. Kelas sedemikian tidak boleh mengandungi kaedah dan medan statik.
-
Namakan mana-mana tiga kelas dalaman?
private static class Holder
—kelas bersarangHashMap
daripadajava.util
.- Antara muka
Map
mempunyaiinterface Entry<K,V>
, yang sekali lagi masukHashMap
dan dilaksanakan dalam kelas bersarang lainstatic class Entry<K,V> implements Map.Entry<K,V>
. private static class IntegerCache
di dalam kelasInteger
.
-
Bagaimanakah kelas dalaman menyelesaikan masalah warisan berbilang di Jawa?
Kerana Pewarisan berbilang kelas di Jawa adalah dilarang; masalah ini diselesaikan dengan bantuan kelas dalaman: dalam kelas yang kami perlukan, kami mengisytiharkan kelas dalaman dan mewarisinya daripada kelas yang diperlukan. Contoh:
class Tiger extends Cat { public void tigerRun() { ..... } public void startTiger() { TigerThread thread = new TigerThread(); thread.start(); } class TigerThread extends Thread { public void run() { tigerRun(); } } }
-
Apakah perbezaan antara kelas tanpa nama berasaskan antara muka dan berasaskan kelas?
Kelas tanpa nama menurut JLS 15.9.5 ialah ungkapan di mana pengisytiharan kelas baharu dan permulaannya digabungkan:
- Apabila mengisytiharkan kelas, kelas baharu akan dibuat yang terbit daripada kelas yang ditentukan apabila digunakan sebagai asas kelas lain, atau melaksanakan antara muka apabila digunakan sebagai asas antara muka.
- Semasa permulaan, objek baharu akan dibuat dan rujukan akan dikembalikan kepadanya: kelas tanpa nama adalah konkrit.
Oleh itu, satu-satunya perbezaan dalam kelas tanpa nama berasaskan antara muka dan berasaskan kelas ialah bilangan kaedah abstrak yang perlu dilaksanakan.
Инициализации анонимного класса на основе интерфейса потребует реализации каждого метода, в то время How при инициализации анонимного класса на основе абстрактного/конкретного класса позволит изменить поведение за счет перегрузки методов и потребует реализации абстракных методов.
-
Можно ли создать анонимный статический вложенный класс?
Нет, статической становится только переменная, но не класс.
GO TO FULL VERSION