Notes
7.5 - Usando classes abstratas e interfaces
Content of the notes (8)
Page 1
Classes abstratas x Interfaces
Similaridades:
Não podem ser instanciadas.
Podem conter uma mistura de métodos que são declarados com ou sem uma implementação.
Diferenças:
Campos em interfaces: serão sempre public, static e final.
Campos em classes abstratas: podem ser não-públicos, de instância e não-final.
Métodos em interfaces: sempre serão públicos
Métodos em classes abstratas: podem ser declarados com quaisquer modificadores de acesso.
Herança em interfaces: uma classe pode implementar quaisquer números de interfaces.
Herança em classes abstratas: uma classe só pode "estender" ou herdar de uma classe.
Page 2
Casos de Uso de classes abstratas
Cobrir casos em que é melhor utilizar classes abstratas a interfaces.
Você deseja compartilhar código entre muitas classes relacionadas.
Você espera que classes que estendam sua classe abstrata tenham muitos métodos e campos em comum, ou requeiram modificadores de acesso diferentes de public.
Você deseja declarar campos não-estáticos ou que não sejam final, possibilitando a definição de métodos que podem acessar e modificar o estado do objeto ao qual pertencem.
Page 3
Casos de uso de interfaces
Quando uma interface é melhor do que uma classe abstrata?
Você espera que classes sem relação entre si implementem sua interface
Você deseja especificar o comportamento de um tipo de dado em particular,mas não tem preocupação sobre quem irá implementar seu comportamento.
Você deseja se beneficiar de herança múltipla de tipo.
Page 4
Questões
Um método abstrato somente pode ser declarado dentro de uma classe abstrata ou em uma interface. Entretanto uma classe abstrata não deve necessariamente conter um método abstrato.
Além disso, não tem nada de errado em declarar um construtor em uma classe abstrata. Esse construtor não será chamado diretamente, mas poderá ser chamado a partir de subclasses.
Alternativa A. Valid.
Page 5
Além de métodos abstratos, também podemos declarar métodos estáticos e default para uma interface. O modificador de acesso default é opcional. Se não especificarmos um modificador, será automaticamente configurado como public, não package-private.
Notar que não é permitido que declaremos nenhum outro modificador de acesso que não seja "public" em um método da interface
Correta letra A.Valid
Page 6
Campos em uma interface somente podem ser public, static e final, mas não precisa declarar esses modificadores nos campos. Serão configurados pelo compilador de forma automática caso não declaremos assim os campos, ainda: um campo final necessita ser inicializado quando declarado. Quaisquer outros modificadores para campos de uma interface não serão válidos.
Resposta B. Invalid, pois o campo myField necessita ser inicializado explicitamente quando declarado e não é acima.
Page 7
A declaração da classe MyClass está correta. Como se trata de uma classe abstrata, não é obrigatório que ao implementar a interface MyInterface, a classe tenha que implementar o método myMethod() declarado nela. Pos a classe implementadora é abstrata!
A. Valid
Page 8
Resumo
Em classes abstratas, pode-se declarar campos que não sejam static e final, mas para interfaces todos os campos são automaticamente public, static e final.
Em classes abstratas, você pode definir métodos com qualquer modificador de acesso, mas para interfaces, todos os métodos serão public implicitamente.
Você pode "estender" ou herdar somente uma classe, seja essa classe abstrata ou não, enquanto você pode implementar quaisquer número de interfaces.
Information
- Description
- Concursos Públicos Desenvolvimento de Software (OCAJP 8 Online Course) Note on 7.5 - Usando classes abstratas e interfaces, created by Luis Felipe Guariento on 27/08/2019.
- Created by
- Luis Felipe Guariento · Aug 2019
- Updated
- Aug 27, 2019
- Views
- 0
- Rating