Va bene implementare un metodo virtuale in una classe base perché so che la maggior parte delle classi derivate utilizzerà quella particolare implementazione?
Supponiamo che abbia la seguente gerarchia di classi (in C #):
public abstract class BaseClass {
public virtual void MethodA() {
//Implement MethodA as DerivedClassA and DerivedClassB
//need it to avoid code duplication for
//DerivedClassA.MethodA and DerivedClassB.MethodB
}
}
public class DerivedClassA : BaseClass {}
public class DerivedClassB : BaseClass {}
public class DerivedClassC : BaseClass {
public override void MethodA() {
//Do MethodA in a DerivedClassC kinda way
}
}
Mi sembra che dovrebbe andare bene perché sembra che questo sia il motivo per cui esistono metodi virtuali, ma qualcosa mi sembra anche un po '"puzzolente" per me. Immagino che mi piacerebbe solo la conferma che questo approccio è ok o che deve essere spiegato perché è cattivo.