Ola
Uma classe anonima sempre precisa estender uma classe ?
Por exemplo
class Empregado {
public void trabalhar() {
System.out.println("trabalhar");
}
}
class QuadroFuncionario {
Empregado mgr = new Empregado() {
public void trabalhar() {
System.out.println("mandar");
}
};
}
Aqui a classe anonima estende a classe Empregado e sobrescreve a funcao trabalhar. Creio que esta seja a sintaxe para criar uma classe anonima sendo que esta obrigatoriamente estende uma classe.
O codigo abaixo porem descreve como criar uma classe anonima, porem desta vez ela nao estende outra classe mas implementa uma interface, segue codigo abaixo
public class Beta {
public static void main(String[] args) {
acao(
new Evento() {
public void clicar() {
System.out.println("clicou");
}
}
);
}
private static void acao(Evento e) {
e.clicar();
}
}
interface Evento {
public abstract void clicar();
}
Portanto eu posso criar uma classe anonima que nao extends uma classe !? existe alguma outra peculiaridade ?
vc pode criar uma classe anonia que extende de outra ou ate mesmo uma implementando ocultamente sua interface… como vc descreveu acima…
Como criar uma classe anonima que extende uma outra classe anonima ?
Isto é impossivel dependendo do seu modo de vista…
Acredito que não seja possível criar uma classe anônima a partir de outra classe anônima.
As classes anônimas podem ser criadas da seguinte maneira:
- Uma subclasse anônima.
- Implementando uma interface.
- Classe anônima definida no argumento.
É impossível escrever uma classe anônima que herda de outra classe anônima porque a classe anônima deve ser uma classe que passe no teste É-UM de alguma classe/interface, ou seja, herdando de uma classe ou implementando uma interface.
Prestando atenção na sintaxe pra criar classe anonima, podemos notar que é preciso informar o nome da classe/interface que será o pai da sua classe anônima. E como as classe anônimas, como o proprio nome diz, nao tem nome, é impossível vc criar uma classe anonima que herda de outra classe anônima.
Outra coisa importante é que vc não escreve uma classe anônima pra sair criando varios objetos dessa classe… vc soh consegue criar uma classe no momento que ja instancia um objeto daquela classe. E não consegue mais fazer nenhum uso dessa classe, seja pra futuras heranças (o que seria necessário pra criar uma classe anônima que herde de outra anônima) ou pra criar outros objetos dessa classe, já que a classe não tem nome.
[]'s