-
Quais são as classes internas?
- As classes aninhadas são divididas em dois tipos: estáticas e não estáticas.
- Classes aninhadas declaradas como estáticas são chamadas de classes aninhadas estáticas.
- Classes não estáticas aninhadas são chamadas de classes internas.
-
Para que uma classe interna anônima é compilada?
Para uma classe interna não estática
-
Por que usar palavras-chave
final
ao criar classes anônimas?Se uma classe interna anônima for definida e precisar usar objetos definidos fora dessa classe interna, o compilador exigirá que as referências passadas a eles sejam declaradas imutáveis (finais). Sem tal declaração, você receberá um erro ao compilar o programa.
-
Como criar corretamente um objeto de classe interna?
Classes internas (não estáticas), como variáveis e métodos, estão associadas a um objeto da classe externa. As classes internas também têm acesso direto aos campos da classe externa. Essas classes não podem conter métodos e campos estáticos. As classes internas não podem existir sem uma instância da classe externa. Para criar um objeto:
Outer outer = new Outer(); Innter inner = outer.new Inner();
-
Como criar corretamente um objeto de uma classe aninhada?
A sintaxe para criar um objeto de classe aninhado é:
OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
-
É possível criar métodos/variáveis estáticos em uma classe interna?
Métodos/variáveis estáticos não podem ser declarados em uma classe interna (não aninhada).
Classes internas (não estáticas), como variáveis e métodos, estão associadas a um objeto da classe externa. Essas classes não podem conter métodos e campos estáticos.
-
Cite quaisquer três classes internas?
private static class Holder
—classe aninhadaHashMap
dejava.util
.- A interface
Map
possuiinterface Entry<K,V>
, que está novamenteHashMap
e é implementada em outra classe aninhadastatic class Entry<K,V> implements Map.Entry<K,V>
. private static class IntegerCache
em aulaInteger
.
-
Como as classes internas resolvem o problema de herança múltipla em Java?
Porque A herança múltipla de classes é proibida em Java, esse problema é resolvido com a ajuda de classes internas: na classe que precisamos, declaramos uma classe interna e a herdamos da classe necessária. Exemplo:
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 é a diferença entre classes anônimas baseadas em interface e classes anônimas baseadas em classe?
Uma classe anônima de acordo com JLS 15.9.5 é uma expressão na qual a declaração de uma nova classe e sua inicialização são combinadas:
- Ao declarar uma classe, será criada uma nova classe que deriva da classe especificada quando usada como base de outra classe, ou implementa a interface quando usada como base de uma interface.
- Durante a inicialização, um novo objeto será criado e uma referência será retornada a ele: a classe anônima é concreta.
Assim, a única diferença entre classes anônimas baseadas em interface e classes anônimas é o número de métodos abstratos que precisam ser implementados.
Инициализации анонимного класса на основе интерфейса потребует реализации каждого метода, в то время How при инициализации анонимного класса на основе абстрактного/конкретного класса позволит изменить поведение за счет перегрузки методов и потребует реализации абстракных методов.
-
Можно ли создать анонимный статический вложенный класс?
Нет, статической становится только переменная, но не класс.
GO TO FULL VERSION