JavaRush /Java Blog /Random-IT /Livello 23. Risposte alle domande dell'intervista sull'ar...
zor07
Livello 31
Санкт-Петербург

Livello 23. Risposte alle domande dell'intervista sull'argomento del livello

Pubblicato nel gruppo Random-IT
Livello 23. Risposte alle domande dell'intervista sull'argomento del livello - 1
  1. 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.
  2. A cosa serve una classe interna anonima?

    A una classe interiore non statica

  3. Perché utilizzare le parole chiave finaldurante 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.

  4. 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();
  5. Come creare correttamente un oggetto di una classe nidificata?

    La sintassi per creare un oggetto di classe nidificato è:

    OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
  6. È 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.

  7. Nomina tre classi interiori?

    1. private static class Holder—classe annidata HashMapda java.util.
    2. L'interfaccia Mapha interface Entry<K,V>, che è di nuovo presente HashMaped è implementata in un'altra classe nidificata static class Entry<K,V> implements Map.Entry<K,V>.
    3. private static class IntegerCachein classe Integer.
  8. 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();
      }
     }
    }
  9. 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 при инициализации анонимного класса на основе абстрактного/конкретного класса позволит изменить поведение за счет перегрузки методов и потребует реализации абстракных методов.

  10. Можно ли создать анонимный статический вложенный класс?

    Нет, статической становится только переменная, но не класс.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION