public static void Main() {
ITeste<Objeto> teste = new CarroTeste();
public string nome => _nome;
public class Carro : Objeto {
public Carro() => _nome = "Carro";
public interface ITeste<out T> where T : Objeto {
public abstract class TesteBase<T> : ITeste<T> where T : Objeto {
protected Objeto _obj = null;
public abstract string GetNome();
public class CarroTeste : TesteBase<Carro> {
public override string GetNome() => "Meu nome é : " + _obj.nome;