Gente, eu sou muito iniciante, e não entendo como funciona esse negócio de abrir chave ao declarar um objeto

5 respostas Resolvido
programaçãojava
Gabriel432135

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?

5 Respostas

Lucas_Camara

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();
    }
}
Gabriel432135

Runnable r = new Runnable() {

public void run() {

System.out.println( "Thread com classer interna!" );

}

};

Tipo esse

Lucas_Camara
Solucao aceita

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

Gabriel432135

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?

javaflex

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.

Criado 20 de janeiro de 2020
Ultima resposta 20 de jan. de 2020
Respostas 5
Participantes 3