Estava efetuando o código assim como o do vídeo, porém o Visual Studio fica informando que para sobrescrever os métodos abstratos preciso colocar um override, porém isso não é feito em vídeo e pelo que eu estudei não é necessário pois classes/métodos abstratos serão obrigatoriamente sobrescritos. Fiz algo errado ou realmente é necessário sobrescrever?
IKCV:
namespace DesignPatterns
{
public class IKCV : TemplateDeImpostoCondicional
{
public bool DeveUsarMaximaTaxacao(Orcamento orcamento)
{
return orcamento.Valor > 500 && temItemMaiorQueCemReaisNo(orcamento);
}
public double MaximaTaxacao(Orcamento orcamento)
{
return orcamento.Valor * 0.10;
}
public double MinimaTaxacao(Orcamento orcamento)
{
return orcamento.Valor * 0.06;
}
private bool temItemMaiorQueCemReaisNo(Orcamento orcamento)
{
foreach (Item item in orcamento.Itens)
{
if (item.Valor > 100) return true;
}
return false;
}
}
}
TemplateDeImpostoCondicional:
namespace DesignPatterns
{
public abstract class TemplateDeImpostoCondicional : Imposto
{
public double Calcula(Orcamento orcamento)
{
if (DeveUsarMaximaTaxacao(orcamento))
{
return MaximaTaxacao(orcamento);
}
return MinimaTaxacao(orcamento);
}
public abstract bool DeveUsarMaximaTaxacao(Orcamento orcamento);
public abstract double MaximaTaxacao(Orcamento orcamento);
public abstract double MinimaTaxacao(Orcamento orcamento);
}
}
Obs.: Colocando override tudo procede como esperado, porém a minha dúvida permanece.
Grato desde já! =D