Gráfico de comparação
Base para Comparação | Classe | Interface |
---|---|---|
Basic | Uma classe é instanciada para criar objetos. | Uma interface nunca pode ser instanciada, pois os métodos não podem executar nenhuma ação na chamada. |
Palavra chave | classe | interface |
Especificador de acesso | Os membros de uma classe podem ser privados, públicos ou protegidos. | Os membros de uma interface são sempre públicos. |
Métodos | Os métodos de uma classe são definidos para executar uma ação específica. | Os métodos em uma interface são puramente abstratos. |
Implementar / estender | Uma classe pode implementar qualquer número de interface e pode estender apenas uma classe. | Uma interface pode estender várias interfaces, mas não pode implementar nenhuma interface. |
Construtor | Uma classe pode ter construtores para inicializar as variáveis. | Uma interface nunca pode ter um construtor, já que praticamente não existe nenhuma variável para inicializar. |
Definição de Classe
Uma classe é um aspecto mais importante da programação Java sem classes que você não pode implementar um programa java. Uma classe cria tipos de referência e esses tipos de referência são usados para criar objetos. Uma turma tem uma assinatura e um corpo. A assinatura de uma turma possui o nome e a informação da turma que informa se a turma herdou outra turma. O corpo de uma classe possui campos e métodos que operam nesses campos. Uma classe é criada usando uma classe de palavras-chave. Nos deixa ver como declarar uma classe.
class class_name {/ * fields ... métodos * /}
Quando uma classe é instanciada, cada objeto criado contém uma cópia de campos e métodos com eles. Os campos e membros declarados dentro de uma classe podem ser estáticos ou não estáticos. O valor de membros estáticos é constante para cada objeto, enquanto os membros não-estáticos são inicializados por cada objeto de maneira diferente de acordo com seu requisito.
Os membros de uma classe têm especificadores de acesso que decidem a visibilidade e a acessibilidade dos membros para o usuário ou para as subclasses. Os especificadores de acesso são públicos, privados e protegidos. Uma classe pode ser herdada por uma outra classe usando o especificador de acesso que decidirá a visibilidade dos membros de uma superclasse (classe herdada) em uma subclasse (classe herdada). Assim, a classe preenche o conceito de ocultação de dados e encapsulamento em programação orientada a objetos.
Definição de Interface
Uma interface também está entre os tipos de referência definidos em Java. A importância de uma interface é que, em Java, uma classe só pode herdar uma única classe. Para evitar essa restrição, os projetistas do Java introduziram um conceito de interface. Uma interface é sintaticamente semelhante a uma classe, mas falta na declaração de campo e os métodos dentro de uma interface não têm nenhuma implementação. Uma interface é declarada usando uma interface de palavra-chave. Vamos ver a declaração de uma interface.
interface interface_name {tipo var_name = valor; tipo method1 (lista de parâmetros); tipo method2 (lista de parâmetros); . . }
Uma interface não define nenhum método declarado dentro dela porque não possui campos para operar. Só porque qualquer método dentro de uma interface não executa nenhuma ação, uma interface nunca pode ser instanciada. Se uma interface tiver algum membro de campo, ele deve ser inicializado no momento de sua declaração. Uma interface nunca contém nenhum construtor, pois ele não possui membros de campo para inicializar. Portanto, uma interface define apenas o que uma classe deve fazer, em vez de como ela deve ser feita.
Uma interface criada uma vez pode ser implementada por qualquer número de classes usando uma palavra-chave implementa . Mas as classes que implementam uma interface devem definir todos os métodos dentro de uma interface. Uma interface também pode herdar outra interface usando a palavra-chave extend . Se uma classe implementa uma interface que estende uma outra interface. Em seguida, uma classe deve definir os métodos de ambas as interfaces que aparecem em uma cadeia. Os métodos dentro de uma interface devem sempre ser públicos, pois eles devem ser acessados pelas classes que os implementam.
Principais diferenças entre classe e interface em Java
- Uma classe pode ser instanciada criando seus objetos. Uma interface nunca é instanciada, pois os métodos declarados dentro de uma interface são abstratos e não executam nenhuma ação, portanto não há uso de instanciação de nenhuma interface.
- Uma classe é declarada usando uma classe de palavras-chave. Da mesma forma, uma interface é criada usando uma interface de palavra-chave.
- Os membros de uma classe podem ter o especificador de acesso como público, privado e protegido. Mas os membros de uma interface são sempre públicos, pois precisam ser acessados pelas classes que os implementam.
- Os métodos dentro de uma classe são definidos para executar uma ação nos campos declarados na classe. Como a interface não possui a declaração de campos, os métodos dentro de uma interface são puramente abstratos.
- Uma classe pode implementar qualquer número de interfaces, mas pode estender apenas uma superclasse. Uma interface pode estender qualquer número de interfaces, mas não pode implementar nenhuma interface.
- Uma classe tem construtores definidos dentro dela para obter a variável inicializada. Mas, uma interface não possui nenhum construtor, pois não há campos a serem inicializados. Os campos de uma interface são inicializados somente no momento de sua declaração.
Conclusão:
Ambas as classes e interfaces têm sua própria importância. Uma classe é usada quando precisamos definir como a tarefa seria executada. Uma interface é usada quando precisamos saber qual tarefa deve ser feita.