Co to jest metoda abstrakcyjna?
Metoda abstrakcyjna to metoda zadeklarowana bez implementacji, czyli bez ciała metody. Określa tylko nazwę, typ zwracany oraz parametry. Jej zadaniem jest wymuszenie, aby klasy pochodne dostarczyły własną implementację tej metody.
W wielu językach programowania, np. w Javie i C#, metoda abstrakcyjna występuje w klasie abstrakcyjnej. Oznacza to, że taka klasa jest przeznaczona głównie jako baza dla innych klas, a nie jako gotowy obiekt do bezpośredniego użycia.
Przykład w Javie
abstract class Figura {
abstract double obliczPole();
}
class Kwadrat extends Figura {
double bok;
Kwadrat(double bok) {
this.bok = bok;
}
@Override
double obliczPole() {
return bok * bok;
}
}
W przykładzie metoda obliczPole() w klasie Figura jest abstrakcyjna. Klasa Kwadrat musi ją zaimplementować, ponieważ dziedziczy po klasie abstrakcyjnej.
Najważniejsze cechy
- metoda abstrakcyjna nie ma ciała,
- wymaga implementacji w klasie pochodnej,
- klasa zawierająca metodę abstrakcyjną zwykle sama musi być abstrakcyjna,
- służy do definiowania wspólnego interfejsu dla wielu klas,
- wspiera polimorfizm i dziedziczenie.
Typowy błąd egzaminacyjny
Modyfikator abstract przy metodzie nie oznacza, że metodę trzeba zaimplementować w tej samej klasie. Wręcz przeciwnie — implementacja jest odkładana na klasy potomne. Dlatego taka klasa stanowi podstawę dla innych klas.