using static System.Console;
using System.Collections.Generic;
public class Test {
public static void Main() {
var pessoas = new List<Pessoa>() {{ new Pessoa() }, { new PessoaFisica { Nome = "Rod" }}};
foreach (var pessoa in pessoas) WriteLine(pessoa.EuSou());
}
}
public class Pessoa { //não usei abstract para facilitar o exemplo
protected int id; //campo
public virtual string EuSou() => "Não sei quem sou!"; //método virtual
}
public class PessoaFisica : Pessoa {
public string Nome { get; set; } //propriedade
public override string EuSou() => $"Eu sou {Nome}!"; //método virtual sobrescrito
}
//https://pt.stackoverflow.com/q/25831/101
dXNpbmcgc3RhdGljIFN5c3RlbS5Db25zb2xlOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKCnB1YmxpYyBjbGFzcyBUZXN0IHsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkgewoJCXZhciBwZXNzb2FzID0gbmV3IExpc3Q8UGVzc29hPigpIHt7IG5ldyBQZXNzb2EoKSB9LCB7IG5ldyBQZXNzb2FGaXNpY2EgeyBOb21lID0gIlJvZCIgfX19OwoJCWZvcmVhY2ggKHZhciBwZXNzb2EgaW4gcGVzc29hcykgV3JpdGVMaW5lKHBlc3NvYS5FdVNvdSgpKTsKCX0KfQoKcHVibGljIGNsYXNzIFBlc3NvYSB7IC8vbsOjbyB1c2VpIGFic3RyYWN0IHBhcmEgZmFjaWxpdGFyIG8gZXhlbXBsbwoJcHJvdGVjdGVkIGludCBpZDsgLy9jYW1wbwogICAgcHVibGljIHZpcnR1YWwgc3RyaW5nIEV1U291KCkgPT4gIk7Do28gc2VpIHF1ZW0gc291ISI7IC8vbcOpdG9kbyB2aXJ0dWFsCn0KCnB1YmxpYyBjbGFzcyBQZXNzb2FGaXNpY2EgOiBQZXNzb2EgewoJcHVibGljIHN0cmluZyBOb21lIHsgZ2V0OyBzZXQ7IH0gLy9wcm9wcmllZGFkZQogICAgcHVibGljIG92ZXJyaWRlIHN0cmluZyBFdVNvdSgpID0+ICQiRXUgc291IHtOb21lfSEiOyAvL23DqXRvZG8gdmlydHVhbCBzb2JyZXNjcml0bwp9CgovL2h0dHBzOi8vcHQuc3RhY2tvdmVyZmxvdy5jb20vcS8yNTgzMS8xMDE=