No contexto da linguagem C#, considere o código a seguir. na...
namespace NS
{ abstract class C1
{ public abstract void M1();
public void M2()
{ . . . . }}
----------------
class P
{ static void Main(string[] args)
{
C2 x = new C2();
x.M1();
x.M2();
}}}
A estrutura de código que substitui corretamente o tracejado é:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Resposta Correta: D
Esta questão aborda o conceito de herança e métodos abstratos na linguagem de programação C#. No código fornecido, C1
é uma classe abstrata com um método abstrato denominado M1()
e um método concreto denominado M2()
. A classe abstrata serve como um modelo para outras classes que derivam dela. Para uma classe ser considerada concreta e instanciável, ela deve implementar todos os métodos abstratos definidos na classe abstrata mãe.
A alternativa correta, a alternativa D, demonstra corretamente a implementação de uma classe derivada, nomeada C2
, que herda da classe abstrata C1
. A classe C2
fornece uma implementação concreta para o método abstrato M1()
, conforme exigido pela definição de uma classe abstrata que contém métodos abstratos. Não é necessário nem possível usar override
no método M2()
, pois ele não é abstrato na classe base C1
.
Segue a estrutura de código que substitui corretamente o tracejado:
<div style="color: blue; font-weight: bold;">class C2 : C1 { public override void M1() { // Implementação do método M1 } }</div>
Portanto, a alternativa D está correta porque segue as regras de herança em C# e fornece a implementação obrigatória do método abstrato M1()
da classe base abstrata C1
, transformando C2
em uma classe concreta que pode ser instanciada e utilizada no método Main
.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
não pesquisei sobre o assunto e não sei nada de C# kkk.
Mas pela intuição e se você souber um pouco de Java , da para responder.
A questão trata sobre herança
No Java , para herdar uma classe , a gente usa
class X extends class Y
ou seja
classe X herda da classe Y
A classe herdada vem antes da classe mãe, assim como na questão
C1:C2
essa eu chutei e foi gol kkk
trata de heranca, como o metodo m2 ja esta implementado, o abstract obriga implementar m1.
A classe C2 herda de C1 então ela precisa sobrescrever o método M1 que é abstrato.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo