Wpis z mikrobloga

@jourska: virtual ma implementację, która może być zmieniona (ale nie musi, możesz używać standardowej implementacji). Abstract to tylko kontrakt, metoda, która musi zostać zaimplementowana w klasie dziedziczącej (brak implementacji jakiejkolwiek).
@jourska: Metoda abstrakcyjna nie może mieć implementacji. Jest tylko definicja (czyli nazwa, zwracany typ i parametry).
Metodę abstrakcyjną możesz zdefiniować tylko w klasie abstrakcyjnej.
Klasa pochodna, która będzie dziedziczyć po klasie abstrakcyjnej musi tę metodę zaimplementować.

Metoda wirtualna ma implementację, ale jednocześnie pozwala klasie pochodnej zrobić override i zaimplementować ją na swój sposób.
Abstract w przypadku klasy - oznacza klase bazową nie można utworzyć instancji można z niej tylko dziedziczyć.
Abstract w przypadku metody - oznacza metodę która wymaga implementacji w klasie pochodnej
Virtual pozwala 'nadpisać' (override) metode/własciwości/event w klasie pochodnej