

Seu próximo nível começa aqui
Seu desenvolvimento não pode ter limites. Garanta sua Assinatura Ilimitada e libere uma preparação completa com os melhores professores do Brasil.
No contexto da linguagem C#, considere o código a seguir.
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 é:
public override void M2()
{ . . . . .
}
class C2 : C1
{ public override void M2()
{ . . . . .
}}
class C1 : C2
{ public override void M1()
{ . . . . .
}}
class C2 : C1
{ public override void M1()
{ . . . .
}}
class C1 : C2
{ public override void M2()
{ . . . . .
}}