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;
}
}
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.
Metoda abstrakcyjna jest oznaczona słowem kluczowym "abstract" i nie ma ciała metody.