Metode

Prin mecanismul de moștenire avem posibilitatea reutilizării codului și redefinirii (prin polimorfism) a metodelor.

Virtual și override

O clasă declarată virtuală implică faptul că o metodă implementată în ea poate fi redefinită în clasele derivate.

Doar metodele virtuale ne statice și/sau private pot fi redefinite într-o clasă derivată. Aceste metode trebuie să aibă aceeași signatură (nume, modificator de acces, tip returnat și parametri). Pentru declararea unei metode ca fiind virtuală se folosește cuvântul cheie virtual. În clasele derivate se va folosi cuvântul cheie override pentru redefinirea metodei virtuale din clasa de bază.

class ClasaDeBaza
{
    public virtual void Metoda()
    {
        ...
    }
}
class Derivata : ClasaDeBaza
{
    public override void Metoda()
    {
        ...
    }
}

 New

Există cazuri în care în loc să redefinim o metodă avem nevoie să specificăm că metoda clasei derivate este o implementare nouă a respectivei metode. Pentru aceasta vom folosi new cu semnificația că metoda are aceeași signatură cu a celei din clasa de bază, dar dorim să mascăm definirea ei în clasa de bază.

class ClasaDeBaza
{
    public virtual void Metoda()
    {
        ...
    }
}
class Derivata : ClasaDeBaza
{
    public new void Metoda()
    {
        ...
    }
}

Leave a comment