1. Wprowadzenie do C#
  2. Szybki start
  3. Pierwszy program
  4. Komentarze
  5. Typy danych
  6. Zmienne
  7. Pola
  8. Właściwości
  9. Stałe
  10. Metody
  11. Instrukcje warunkowe
  12. Pętle
  13. Tablice
  14. Kolekcje
  15. Klasy
  16. Dziedziczenie
  17. Polimorfizm
  18. Konwersja typów
  19. Właściwości klasy String
  20. Typy wyliczeniowe
  21. Interfejsy
  22. Klasy statyczne
  23. Klasy Abstrakcyjne
  24. Przestrzenie nazw
  25. Wyjątki
  26. Typy generyczne
  27. JSON
  28. XML
  29. Podsumowanie

Klasy abstrakcyjne

Klasa abstrakcyjna w języku C# to klasa, która nie może być bezpośrednio utworzona jako obiekt. Zamiast tego, musi być rozszerzona przez inny klasę, która implementuje jego abstrakcyjne metody i właściwości. Abstrakcyjne klasy mogą zawierać implementacje metod, ale muszą zawierać co najmniej jedną abstrakcyjną metodę, którą klasy pochodne muszą implementować. Klasy abstrakcyjne służą do tworzenia hierarchii klas, a także jako wzorzec projektowy.

Metoda abstrakcyjna jest metodą, która nie ma implementacji w klasie bazowej i musi być zaimplementowana przez klasę pochodną.

								
abstract class Ksztalt // Klasa abstrakcyjna
{
    public abstract double Pole(); // Metoda abstrakcyjna
    public abstract double Obwod(); // Metoda abstrakcyjna
}

class Prostokat : Ksztalt // Klasa Prostokat rozszerza klasę Ksztalt
{
    private double szerokosc;
    private double wysokosc;

    public Prostokat(double s, double w)
    {
        szerokosc = s;
        wysokosc = w;
    }

    public override double Pole()
    {
        return szerokosc * wysokosc;
    }

    public override double Obwod()
    {
        return 2 * (szerokosc + wysokosc);
    }
}

class Kolo : Ksztalt // Klasa Kolo rozszerza klasę Ksztalt
{
    private double promien;

    public Kolo(double r)
    {
        promien = r;
    }

    public override double Pole()
    {
        return Math.PI * promien * promien;
    }

    public override double Obwod()
    {
        return 2 * Math.PI * promien;
    }
}
								
						
Wyjaśnienie

W tym przykładzie, klasa "Ksztalt" jest klasą abstrakcyjną i zawiera dwie metody abstrakcyjne "Pole()" i "Obwod()". Klasy "Prostokat" i "Kolo" rozszerzają klasę "Ksztalt" i implementują metody abstrakcyjne. W ten sposób klasy pochodne mogą dziedziczyć wspólne cechy od klasy bazowej i rozszerzać je o swoje specyficzne funkcjonalności.

Notatka

Metoda abstrakcyjna jest oznaczona słowem kluczowym "abstract" i nie ma ciała metody.