fork download
  1. using static System.Console;
  2.  
  3. public abstract class Pessoa {
  4. public abstract int Id { get; set; }
  5. public abstract string Nome { get; set; }
  6.  
  7. public abstract void Andar();
  8. }
  9.  
  10. public class Comprador : Pessoa {
  11. public override int Id { get; set; }
  12. public override string Nome { get; set; }
  13.  
  14. public override void Andar() => WriteLine("Comprador andou");
  15.  
  16. public void Comprar() => WriteLine("Comprou");
  17. }
  18.  
  19. public class Vendedor : Pessoa {
  20. public override int Id { get; set; }
  21. public override string Nome { get; set; }
  22.  
  23. public override void Andar() => WriteLine("Vendedor andou");
  24.  
  25. public void Vender() => WriteLine("Vendeu");
  26. }
  27.  
  28. public class Sistema {
  29. public static void Main() {
  30. var pessoaComprador = new Comprador();
  31. pessoaComprador.Nome = "João";
  32. pessoaComprador.Comprar();
  33. UmOutroMetodo(pessoaComprador);
  34. var pessoaVendedor = new Vendedor();
  35. pessoaVendedor.Nome = "José";
  36. pessoaVendedor.Vender();
  37. UmOutroMetodo(pessoaVendedor);
  38. }
  39. //note que se passar um objeto do tipo Pessoa nem funcionaria de fato, deve ser conreto
  40. public static void UmOutroMetodo(Pessoa pessoa) {
  41. WriteLine(pessoa.Nome); //vai pegar o que foi usado na classe concreta
  42. pessoa.Andar(); //vai lançar a exceção
  43. }
  44. }
  45.  
  46. //https://pt.stackoverflow.com/q/154421/101
Success #stdin #stdout 0.02s 15872KB
stdin
Standard input is empty
stdout
Comprou
João
Comprador andou
Vendeu
José
Vendedor andou