JavaRush /Blog Java /Random-ES /Nivel 23. Respuestas a las preguntas de la entrevista sob...
zor07
Nivel 31
Санкт-Петербург

Nivel 23. Respuestas a las preguntas de la entrevista sobre el tema del nivel.

Publicado en el grupo Random-ES
Nivel 23. Respuestas a las preguntas de la entrevista sobre el tema del nivel - 1
  1. ¿Cuáles son las clases internas?

    • Las clases anidadas se dividen en dos tipos: estáticas y no estáticas.
    • Las clases anidadas declaradas como estáticas se denominan clases anidadas estáticas.
    • Las clases anidadas no estáticas se denominan clases internas.
  2. ¿En qué se compila una clase interna anónima?

    A una clase interna no estática

  3. ¿ Por qué utilizar palabras clave finalal crear clases anónimas?

    Si se define una clase interna anónima y necesita usar objetos definidos fuera de esta clase interna, el compilador requiere que las referencias que se les pasan se declaren inmutables (finales). Sin dicha declaración, recibirá un error al compilar el programa.

  4. ¿Cómo crear correctamente un objeto de clase interna?

    Las clases internas (no estáticas), como las variables y los métodos, están asociadas con un objeto de la clase externa. Las clases internas también tienen acceso directo a los campos de la clase externa. Estas clases no pueden contener métodos y campos estáticos. Las clases internas no pueden existir sin una instancia de la externa. Para crear un objeto:

    Outer outer = new Outer();
    Innter inner = outer.new Inner();
  5. ¿Cómo crear correctamente un objeto de una clase anidada?

    La sintaxis para crear un objeto de clase anidado es:

    OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
  6. ¿Es posible crear métodos/variables estáticas en una clase interna?

    Los métodos/variables estáticos no se pueden declarar en una clase interna (no anidada).

    Las clases internas (no estáticas), como las variables y los métodos, están asociadas con un objeto de la clase externa. Estas clases no pueden contener métodos y campos estáticos.

  7. ¿Nombra tres clases internas?

    1. private static class Holder—clase anidada HashMapde java.util.
    2. La interfaz Maptiene interface Entry<K,V>, que nuevamente HashMapestá implementada en otra clase anidada static class Entry<K,V> implements Map.Entry<K,V>.
    3. private static class IntegerCacheen la clase Integer.
  8. ¿Cómo resuelven las clases internas el problema de la herencia múltiple en Java?

    Porque La herencia múltiple de clases en Java está prohibida, este problema se resuelve con la ayuda de clases internas: en la clase que necesitamos declaramos una clase interna y la heredamos de la clase requerida. Ejemplo:

    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. ¿Cuál es la diferencia entre clases anónimas basadas en interfaz y clases anónimas?

    Una clase anónima según JLS 15.9.5 es una expresión en la que se combinan la declaración de una nueva clase y su inicialización:

    • Al declarar una clase, se creará una nueva clase que deriva de la clase especificada cuando se usa como base de otra clase, o implementa la interfaz cuando se usa como base de una interfaz.
    • Durante la inicialización, se creará un nuevo objeto y se le devolverá una referencia: la clase anónima es concreta.

    Por lo tanto, la única diferencia entre las clases anónimas basadas en interfaces y las basadas en clases es la cantidad de métodos abstractos que deben implementarse.

    Inicializar una clase anónima basada en una interfaz requerirá la implementación de cada método, mientras que inicializar una clase anónima basada en una clase abstracta/concreta permitirá que el comportamiento cambie mediante la sobrecarga de métodos y requerirá la implementación de métodos abstractos.

  10. ¿Es posible crear una clase anidada estática anónima?

    No, sólo una variable se vuelve estática, no una clase.

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