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.'
alsenq 02-02-2022 02:00
Jeśli chodzi o odpowiedź na pytanie co to jest metoda wirtualna w C# to nie mam zastrzeżeń ale przydałoby się trochę więcej praktycznych przykładów.


© 2024 - SkillsTest.pl | | Regulamin | Polityka Prywatnosci