Como funciona isso:
Classe c = new Classe() {
System.out.println("...");
}
Onde o “…” seria usado? Como funciona esse negócio de abrir uma chave quando implementa um objeto?
Como funciona isso:
Classe c = new Classe() {
System.out.println("...");
}
Onde o “…” seria usado? Como funciona esse negócio de abrir uma chave quando implementa um objeto?
Esse código não é valido. Ao tentar executar, iria acontecer um erro de compilação.
O correto seria assim:
Arquivo Classe.java
public class Classe {
public void imprimir() {
System.out.println("...");
}
}
Arquivo Principal.java
public class Principal {
public static void main(String args[]) {
Classe classe = new Classe();
classe.imprimir();
}
}
Agora, usando uma Interface, seria possível fazer algo assim:
Arquivo Impressora.java
public interface Impressora {
void imprimir();
}
Arquivo Principal.java
public class Principal {
public static void main(String args[]) {
Impressora impressora = new Impressora() {
public void imprimir() {
System.out.println("...");
}
};
impressora.imprimir();
}
}
Runnable r = new Runnable() {
public void run() {
System.out.println( "Thread com classer interna!" );
}
};
Tipo esse
Saquei. Uma interface no java precisa de uma implementação para poder ter utilidade. E vc pode fornecer uma implementação para a interface utilizando uma classe separada ou via classe anônima.
Classe anônima é uma em que vc não precisa criar ela utilizando a palavra-chave class.
Dê uma lida aqui: https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html
Entendi. Em falar nisso, qual a real utilidade de uma interface? Tipo, ela serve apenas para escrever uma lista de métodos, mas pra que? Por que não faz isso de uma vez em uma classe?
Interface na maioria das vezes não serve pra nada em requisitos funcionais, embora muitos usam só pra burocratizar. Serve em casos quando realmente temos que estabelecer um contrato pra n implementacoes previstas seguirem o mesmo contrato (mesmos métodos, etc). Isso acontece mais em requisitos não funcionais já prontos pra usar, como por exemplo interface de acesso a banco de dados.