Uporaba virtualnih metod je smiselna, ko v baznem razredu opišemo nek tip, v podrazredih pa funkcionalnost tega razreda povečamo ali na novo določimo. Recimo da v baznem razredu Pes definiramo metodo lajež, v podrazredih NemškiOvčar, Terier, Dalmatinec pa definiramo metode, ki natančneje opredeljujejo laježe posameznih pasem.
Včasih imamo v baznem razredu metodo, ki je uporabna tudi v metodah podrazredov. Primer: ploščina kvadrata in kocke. Ploščina kocke je enaka ploščinam šestih enakih kvadratov, ki sestavljajo plašč kocke. Bazni razred je kvadrat, podrazred pa kocka. V takem primeru pri metodi za računanje ploščine kocke uporabimo že definirano metodo za računanje ploščine iz baznega razreda. Pri override metodi bomo tako klicali bazno metodo s pomočjo določila base.
public class Kvadrat
{
public double x;
public Kvadrat(double x)
{ this.x = x; }
public virtual double Ploscina()
{ return x * x; }
}
class Kocka : Kvadrat
{
public Kocka(double x) : base(x) { }
public override double Ploscina()
{ return (6 * (base.Ploscina())); }
}