-
Quali sono le classi interne?
- Le classi nidificate sono divise in due tipi: statiche e non statiche.
- Le classi nidificate dichiarate come statiche sono chiamate classi nidificate statiche.
- Le classi non statiche nidificate sono chiamate classi interne.
-
A cosa serve una classe interna anonima?
A una classe interiore non statica
-
Perché utilizzare le parole chiave
final
durante la creazione di classi anonime?Se viene definita una classe interna anonima e necessita di utilizzare oggetti definiti all'esterno di questa classe interna, il compilatore richiede che i riferimenti ad essa passati siano dichiarati immutabili (finali). Senza tale dichiarazione si riceverà un errore durante la compilazione del programma.
-
Come creare correttamente un oggetto di classe interna?
Le classi interne (non statiche), come variabili e metodi, sono associate a un oggetto della classe esterna. Le classi interne hanno anche accesso diretto ai campi della classe esterna. Tali classi non possono contenere metodi e campi statici. Le classi interne non possono esistere senza un'istanza di quella esterna. Per creare un oggetto:
Outer outer = new Outer(); Innter inner = outer.new Inner();
-
Come creare correttamente un oggetto di una classe nidificata?
La sintassi per creare un oggetto di classe nidificato è:
OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
-
È possibile creare metodi/variabili statici in una classe interna?
I metodi/variabili statici non possono essere dichiarati in una classe interna (non annidata).
Le classi interne (non statiche), come variabili e metodi, sono associate a un oggetto della classe esterna. Tali classi non possono contenere metodi e campi statici.
-
Nomina tre classi interiori?
private static class Holder
—classe annidataHashMap
dajava.util
.- L'interfaccia
Map
hainterface Entry<K,V>
, che è di nuovo presenteHashMap
ed è implementata in un'altra classe nidificatastatic class Entry<K,V> implements Map.Entry<K,V>
. private static class IntegerCache
in classeInteger
.
-
In che modo le classi interne risolvono il problema dell'ereditarietà multipla in Java?
Perché L'ereditarietà multipla delle classi in Java è vietata; questo problema viene risolto con l'aiuto di classi interne: nella classe di cui abbiamo bisogno, dichiariamo una classe interna e la ereditiamo dalla classe richiesta. Esempio:
class Tiger extends Cat { public void tigerRun() { ..... } public void startTiger() { TigerThread thread = new TigerThread(); thread.start(); } class TigerThread extends Thread { public void run() { tigerRun(); } } }
-
Qual è la differenza tra classi anonime basate sull'interfaccia e classi anonime basate su classi?
Una classe anonima secondo JLS 15.9.5 è un'espressione in cui sono combinate la dichiarazione di una nuova classe e la sua inizializzazione:
- Quando si dichiara una classe, verrà creata una nuova classe che deriva dalla classe specificata quando utilizzata come base di un'altra classe o che implementa l'interfaccia quando utilizzata come base di un'interfaccia.
- Durante l'inizializzazione verrà creato un nuovo oggetto e ad esso verrà restituito un riferimento: la classe anonima è concreta.
Pertanto, l'unica differenza tra le classi anonime basate sull'interfaccia e quelle basate sulla classe è il numero di metodi astratti che devono essere implementati.
Инициализации анонимного класса на основе интерфейса потребует реализации каждого метода, в то время How при инициализации анонимного класса на основе абстрактного/конкретного класса позволит изменить поведение за счет перегрузки методов и потребует реализации абстракных методов.
-
Можно ли создать анонимный статический вложенный класс?
Нет, статической становится только переменная, но не класс.
GO TO FULL VERSION