Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Por que substituir métodos ao invés de simplesmente remover os métodos da classe base?

Na aula é mostrada a substituição de métodos, mostrando que é possível utilizar a palavra reservada override no método da classe derivada para acessá-lo ao invés do método presente na classe base, porém não foi explicado o motivo de se fazer isso. Por que sobrescrever um método da classe base, tornando-o inútil, ao invés de simplesmente removê-lo da classe base e implementá-lo somente na classe derivada?

Agradeço desde já.

1 resposta
solução!

Quando você faz uma sobre escrita de método, você está dando um novo comportamento a este método. O comportamento antigo ainda existe e é válido... só que ele só será executado caso a sua referência, em tempo de execução, aponte para um objeto do tipo base. Caso a referência aponte para um objeto do tipo derivado, o comportamento do método será o novo...

O motivo de vocẽ não remover o método da classe base e somente criá-lo na classe derivada, são vários. O mais importante deles é para que você não viole o princípio da substituição de Liskov. (não que esse princípio não possa ser violado com um override, mas sem o override a violação é garantida).

Dê uma estudada sobre SOLID e boas práticas de orientação a objetos e você irá internalizar esses conceitos!