SóProvas


ID
3132943
Banca
VUNESP
Órgão
Câmara de Piracicaba - SP
Ano
2019
Provas
Disciplina
Programação
Assuntos

Em um código-fonte de um programa construído com base na orientação a objetos, há um método M abstrato não-estático em uma classe C. Isso significa que

Alternativas
Comentários
  • Nessa questão são importantes os conceitos de Métodos ou classes abstratas, e de Métodos estáticos.

    Métodos Abstratos são declarados sem implementação, normalmente em uma interface.

    Métodos Estáticos são chamados sem a necessidade de instanciar a classe.

    Portanto, como M é um método abstrato, não há implementação do mesmo na própria definição, apenas em uma classe que implemente a interface e dê uma implementação "concreta" ao método.

    Portanto a letra A é a correta:

    Uma chamada a M requer uma implementação do mesmo em uma subclasse de C.

  • Classe Abstrata

    1. Não suporta Herança Múltipla

    2. Pode conter métodos concretos ou abstratos: Isso quer dizer que todos os métodos de uma classe abstrata podem ser tanto concretos como, também, todos podem ser abstratos;

    3. Pode conter atributos de todos os tipos

    4. Contém construtor

    5. Quando utilizar? Diferente da interface que pode estar envolvida com diversas classes sem qualquer relação entre si, uma classe abstrata continua sendo uma classe. E sabemos que quando uma classe X herda de uma classe Y é o mesmo que dizer que X é um Y. Ou seja, quando queremos criar várias classes que irão compartilhar um mesmo comportamento, uma classe abstrata é o componente ideal para ser a base para criação de todas elas, servindo como um molde para as futuras classes que irão derivar dela. Conclusão: classes abstratas definem a identidade de suas classes derivadas ditando o que e como uma classe deve se comportar, o que aumenta o acoplamento entre classes, porém faz total sentido em algumas situações.

    Interface

    1. Suporta Herança Múltipla: Uma classe pode implementar múltiplas interfaces;

    2. Permite apenas métodos abstratos: Nenhum método com implementação. Temos algumas exceções que chegaram com o Java 8, mas essa é a ideia principal;

    3. Não contém atributos: Essa é outra regra que possui uma exceção. Enquanto é comum ouvirmos que interfaces não guardam o estado da classe por não suportarem a instância de atributos, elas ainda podem conter atributos constantes de classe ();

    4. Não contém construtor

    5. Quando utilizar? O ideal é utilizar a interface quando várias classes diferentes compartilham apenas a assinatura de seus métodos. Em outras palavras, podemos ter várias classes sem qualquer relação entre si, mas se elas compartilharem as funcionalidades oferecidas pela interface que estamos criando, então faz total sentido que essas classes a implementem. Conclusão: interfaces estão aí para ditar o que uma classe deve fazer, ajudando a definir quais habilidades as classes que assinarem esse "contrato" devem possuir.

    Fonte:

    https://cursos.alura.com.br/forum/topico-diferenca-entre-classe-abstrata-e-interface-144776?gclid=Cj0KCQiA-eeMBhCpARIsAAZfxZCp_S6dIWLW3gvx9ntLrZYtvKKEw3hrhsgOuD6s1JwhPcUXi_MWFdYaAhyfEALw_wcB