JavaRush /Blog Java /Random-PL /Poziom 23. Odpowiedzi na pytania podczas rozmowy kwalifik...
zor07
Poziom 31
Санкт-Петербург

Poziom 23. Odpowiedzi na pytania podczas rozmowy kwalifikacyjnej na temat poziomu

Opublikowano w grupie Random-PL
Poziom 23. Odpowiedzi na pytania z rozmowy kwalifikacyjnej na temat poziomu - 1
  1. Jakie są klasy wewnętrzne?

    • Klasy zagnieżdżone dzielą się na dwa typy: statyczne i niestatyczne.
    • Klasy zagnieżdżone zadeklarowane jako statyczne nazywane są statycznymi klasami zagnieżdżonymi.
    • Zagnieżdżone klasy niestatyczne nazywane są klasami wewnętrznymi.
  2. Do czego kompiluje się anonimowa klasa wewnętrzna?

    Do wewnętrznej klasy niestatycznej

  3. Po co używać słowa kluczowego finalpodczas tworzenia anonimowych klas?

    Jeśli zdefiniowano anonimową klasę wewnętrzną i musi ona używać obiektów zdefiniowanych poza tą klasą wewnętrzną, kompilator wymaga, aby przekazane do niej odniesienia zostały zadeklarowane jako niezmienne (końcowe). Bez takiej deklaracji podczas kompilacji programu pojawi się błąd.

  4. Jak poprawnie utworzyć obiekt klasy wewnętrznej?

    Klasy wewnętrzne (niestatyczne), podobnie jak zmienne i metody, są powiązane z obiektem klasy zewnętrznej. Klasy wewnętrzne mają także bezpośredni dostęp do pól klasy zewnętrznej. Klasy takie nie mogą zawierać metod i pól statycznych. Klasy wewnętrzne nie mogą istnieć bez instancji zewnętrznej. Aby utworzyć obiekt:

    Outer outer = new Outer();
    Innter inner = outer.new Inner();
  5. Jak poprawnie utworzyć obiekt klasy zagnieżdżonej?

    Składnia tworzenia obiektu klasy zagnieżdżonej jest następująca:

    OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
  6. Czy można tworzyć statyczne metody/zmienne w klasie wewnętrznej?

    Metody/zmienne statyczne nie mogą być deklarowane w klasie wewnętrznej (nie zagnieżdżonej).

    Klasy wewnętrzne (niestatyczne), podobnie jak zmienne i metody, są powiązane z obiektem klasy zewnętrznej. Klasy takie nie mogą zawierać metod i pól statycznych.

  7. Wymień trzy klasy wewnętrzne?

    1. private static class Holder—zagnieżdżona klasa HashMapz java.util.
    2. Interfejs Mapma interface Entry<K,V>, który ponownie znajduje się w HashMapinnej klasie zagnieżdżonej i jest zaimplementowany w innej klasie zagnieżdżonej static class Entry<K,V> implements Map.Entry<K,V>.
    3. private static class IntegerCachew klasie Integer.
  8. W jaki sposób klasy wewnętrzne rozwiązują problem wielokrotnego dziedziczenia w Javie?

    Ponieważ Wielokrotne dziedziczenie klas jest w Javie zabronione, problem ten rozwiązuje się za pomocą klas wewnętrznych: w potrzebnej nam klasie deklarujemy klasę wewnętrzną i dziedziczymy ją z wymaganej klasy. Przykład:

    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. Jaka jest różnica między anonimowymi klasami opartymi na interfejsie i klasami?

    Klasa anonimowa według JLS 15.9.5 to wyrażenie, w którym łączy się deklarację nowej klasy i jej inicjalizację:

    • Podczas deklarowania klasy zostanie utworzona nowa klasa, która wywodzi się z określonej klasy, gdy jest używana jako baza innej klasy, lub implementuje interfejs, gdy jest używana jako baza interfejsu.
    • Podczas inicjalizacji zostanie utworzony nowy obiekt i zostanie zwrócona do niego referencja: klasa anonimowa jest konkretna.

    Zatem jedyną różnicą między anonimowymi klasami opartymi na interfejsie i klasami jest liczba abstrakcyjnych metod, które należy zaimplementować.

    Инициализации анонимного класса на основе интерфейса потребует реализации каждого метода, в то время Jak при инициализации анонимного класса на основе абстрактного/конкретного класса позволит изменить поведение за счет перегрузки методов и потребует реализации абстракных методов.

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

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

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