Fácil C#
Implementando uma interface simples
Enunciado
Crie uma interface IVeiculo com o método Mover(). Depois, crie a classe Carro que implementa IVeiculo e imprime "Carro em movimento". No Main, instancie um Carro e chame Mover().
Requisitos
- Declarar a interface
IVeiculocom o métodoMover(). - A classe
Carrodeve implementarIVeiculo. - O método
Mover()deve imprimir exatamente"Carro em movimento". - O programa deve compilar e executar sem erros.
Código inicial
using System;
// TODO: declarar a interface IVeiculo
// TODO: implementar a classe Carro
public class Program
{
public static void Main()
{
// TODO: criar um Carro e chamar Mover()
}
}
Saída esperada
Carro em movimento
Ver dica
Lembre-se de que a interface define apenas a assinatura do método; a implementação fica na classe.
Mostrar solução
using System;
// Interface que define o contrato
public interface IVeiculo
{
void Mover();
}
// Classe que implementa a interface
public class Carro : IVeiculo
{
public void Mover()
{
Console.WriteLine("Carro em movimento");
}
}
public class Program
{
public static void Main()
{
// Instancia e chama o método através da interface
IVeiculo veiculo = new Carro();
veiculo.Mover();
}
}
Passo a passo
- Declaramos a interface
IVeiculocom o métodoMover(). Interfaces não têm implementação (até C# 8, mas aqui não usamos default). - A classe
Carroherda deIVeiculousando: IVeiculo. - Dentro de
Carro, implementamosMover()com a mensagem solicitada. - No
Main, criamos uma variável do tipoIVeiculoe atribuímos uma instância deCarro. - Chamamos
veiculo.Mover(), que executa a implementação deCarro.
Por que funciona
A interface garante que qualquer classe que a implemente tenha o método Mover(). Isso permite tratar objetos de tipos diferentes de forma uniforme. O polimorfismo entra em ação quando chamamos o método através da referência da interface.
Erros comuns
- Esquecer de implementar o método na classe:
public class Carro : IVeiculo { }gera erro de compilação. - Declarar o método sem
public:void Mover()na classe não satisfaz a interface (deve ser público). - Tentar instanciar a interface:
IVeiculo v = new IVeiculo();não compila.
Outra forma de resolver
Pode-se usar uma classe abstrata, mas interfaces são preferíveis quando se quer contrato sem herança de implementação.
Saída esperada
Carro em movimento