Interface igual a classe abstrata? - Java - GUJ
Interface igual a classe abstrata?
HgPBrito 2017-12-05 22:47:11 UTC #1
Boa noite galera, comecei a estudar programação em Java e me surgiu uma duvida, como esta no titulo do tópico, a interface funcionaria igual a uma classe abstrata somente com métodos abstratos?
TerraSkilll 2017-12-05 23:10:17 UTC #2
Qual a sua compreensão de classes abstratas e interfaces? Como essa compreensão te levou a concluir que são iguais?
Você pode estar confundido pelo fato de ambas permitirem funcionalidades similares (não podem ser instanciadas e as classes derivadas acabam tendo que implementar funcionalidades nelas previstas, por exemplo). Mas concentre-se nas diferenças (o que uma pode fazer que a outra não pode) e talvez fique mais evidente que são conceitos distintos.
Um tópico para você ler: Classe Abstrata ou Interface
HgPBrito 2017-12-05 23:29:12 UTC #3
acho que a confusão é justamente essa, pelas funcionalidades similares, olhando a grosso modo a interface parece uma espécie de classe abstrata só com métodos abstratos, estava lendo o material da caelum.
https://www.caelum.com.br/apostila-java-orientacao-objetos/interfaces/
não que o conceito seja igual mas a funcionalidade, enquanto na classe abstrata você tem atributos, métodos e métodos abstratos, a interface tem somente métodos abstratos.
staroski 2017-12-06 09:08:53 UTC #4
A principal diferença entre uma interface e uma classe abstrata é que uma interface é o que se chama na computação de "tipo abstrato de dados", elas não possuem atributos de instância e seus métodos são sempre abstratos. A partir do Java 8, onde você pode criar métodos com uma implementação default nas interfaces.
Já uma classe abstrata é uma classe que foi projetada para ser estendida, ela pode ter atributos de instância como qualquer classe não abstrata. Ela não necessariamente possui métodos abstratos, mas por ser uma classe abstrata, pode declarar métodos abstratos.