2
respostas

Mas no código a classe base não possui a palavra reservada 'virtual' e nem o metodo da classe derivada usa o 'override'. Entendo eu que ele vai pegar a informação da classe base e ignorar o que foi declarado na classe derivada.

Achei que o retorno seria 1.

2 respostas

Pelo que entendi, justamente pelo fato da classe filha ContaCorrente não possuir um método override que ela não modifica o comportamento do método na classe mãe Conta, neste caso os dois métodos foram executados, mas como o objeto é da classe filha, quando foi chamado no Console.WriteLine(), somente foi exibido a execução do método da classe ContaCorrente.

É justamente o oposto que acontece. Por possuírem o mesmo método, o método de ContaCorrente oculta o método de Conta, por isso o retorno 0. Ao escrever o Código no Visual Studio, o compilador avisa deste comportamento, sublinhando em verde o Método da classe ContaCorrente.