Metody wirtualne pozwalają na nadpisywanie metod klasy bazowej w klasach pochodnych.
Mówiąc prościej klasa bazowa może dostarczać implementację danej funkcji, lecz jeśli programista uzna, że klasa pochodna powinna być zaimplementowana w inny sposób, może ją nadpisać.
Stworzymy metodę wirtualną Start() w klasie bazowej Car oraz nadpiszemy ją w klasie pochodnej FastCar.
public class Car
{
public virtual void Start()
{
Console.WriteLine("Car started.");
}
}
public class FastCar : Car
{
public override void Start()
{
Console.WriteLine("FastCar started.");
}
}
W przypadku gdy stworzony zostanie obiekt typu klasy bazowej wskazując na klasę pochodną, jako implementację funkcji Start użyta zostanie ta z klasy pochodnej.
Car car = new Car();
car.Start(); //output: 'Car started.'
Car carFastCar = new FastCar(); // tworzymy obiekt typu Car wskazując na klasę FastCar
carFastCar.Start();//output: 'FastCar started.' efekt działania metody wirtualnej
FastCar fastCar = new FastCar();
fastCar.Start(); //output: 'FastCar started.'
Korzystając z serwisu akceptujesz regulamin
oraz politykę prywatności.
Używamy informacji zapisanych za pomocą plików cookies w celu zapewnienia maksymalnej wygody w korzystaniu z naszego serwisu.
Jeśli nie wyrażasz zgody, ustawienia dotyczące plików cookies możesz zmienić w swojej przeglądarce.
Metody wirtualne pozwalają na nadpisywanie metod klasy bazowej w klasach pochodnych.
Mówiąc prościej klasa bazowa może dostarczać implementację danej funkcji, lecz jeśli programista uzna, że klasa pochodna powinna być zaimplementowana w inny sposób, może ją nadpisać.
Stworzymy metodę wirtualną Start() w klasie bazowej Car oraz nadpiszemy ją w klasie pochodnej FastCar.
W przypadku gdy stworzony zostanie obiekt typu klasy bazowej wskazując na klasę pochodną, jako implementację funkcji Start użyta zostanie ta z klasy pochodnej.