Posts
21/02/2014
Andro Louredo.
Uma interface é um conjunto de métodos públicos, sem implementação, que deverão ser implementados pela classe que utiliza essa interface. Uma interface não pode ser instanciada. Um classe pode implementar diversas interfaces diferentes. Costumasse dizer que uma interface é uma classe 100% abstrata. Todos os métodos assinados são públicos e abstratos, mesmo que não seja adicionado explicitamente em sua assinatura.
É útil por exemplo, quando você quer que classes tenham métodos com a mesma assinatura mas implementações diferentes, você cria uma interface para definir assinatura destes métodos. As classes então implementam eles da maneira que querem.
Classe abstrata não pode ser instanciada, só herdada. Possui métodos abstratos e/ou métodos já implementados. Quem herda a classe abstrata deverá implementar os métodos abstratos, e consequentemente herdará a implementação dos métodos já implementados.
É útil quando você precisa definir o corpo dos métodos e se ainda assim precisar, pode criar métodos abstratos para serem implementados pela classe que herda ela.
Por exemplo, se você tem um DAO, você pode criar uma interface com a assinatura de métodos como save, update, remove, find... Cada classe que implementar essa interface terá sua própria implementação para cada método.
Caso todas as classes usem a mesma implementação para os métodos save, update e remove, mas os métodos find são específicos para cada classe, você pode criar uma classe abstrata ao invés da interface. Assim, implementaria os métodos save, update e remove, uma unica vez para todas as classes, mas deixaria o método find como abstrato, para que cada classe fosse obrigada a criar sua própria implementação para esse método.
[quote="xikobol"]Pessoal Estou começando a estudar java a fundo para possível certificação mas estou com duvidas básicas sobre Interface e Classe Abstrata.
O que vem a ser interface e qual as diferença entre esta e uma classe abstrata?
valeu..
Ps: estou lendo o livro, mas não entendi bem a explicação.
Acho que um ótimo lugar para você tirar essa dúvida além do amigo ai de cima, é na Devmedia, sempre pesquisei por lá, o conteúdo é muito, leia sobre a explicação em [url=https://www.devmedia.com.br/interfaces-x-classes-abstratas/13337]Interfaces X Classes Abstratas[/url].
[quote="romarcio"]Uma interface é um conjunto de métodos públicos, sem implementação, que deverão ser implementados pela classe que utiliza essa interface. Uma interface não pode ser instanciada. Um classe pode implementar diversas interfaces diferentes. Costumasse dizer que uma interface é uma classe 100% abstrata. Todos os métodos assinados são públicos e abstratos, mesmo que não seja adicionado explicitamente em sua assinatura.
É útil por exemplo, quando você quer que classes tenham métodos com a mesma assinatura mas implementações diferentes, você cria uma interface para definir assinatura destes métodos. As classes então implementam eles da maneira que querem.
Classe abstrata não pode ser instanciada, só herdada. Possui métodos abstratos e/ou métodos já implementados. Quem herda a classe abstrata deverá implementar os métodos abstratos, e consequentemente herdará a implementação dos métodos já implementados.
É útil quando você precisa definir o corpo dos métodos e se ainda assim precisar, pode criar métodos abstratos para serem implementados pela classe que herda ela.
Por exemplo, se você tem um DAO, você pode criar uma interface com a assinatura de métodos como save, update, remove, find... Cada classe que implementar essa interface terá sua própria implementação para cada método.
Caso todas as classes usem a mesma implementação para os métodos save, update e remove, mas os métodos find são específicos para cada classe, você pode criar uma classe abstrata ao invés da interface. Assim, implementaria os métodos save, update e remove, uma unica vez para todas as classes, mas deixaria o método find como abstrato, para que cada classe fosse obrigada a criar sua própria implementação para esse método.
Você esqueceu de falar da herança múltipla, que na minha opinião é a única vantagem de utilizar Interfaces.