Klasa abstrakcyjna w Javie

Słownik kwalifikacji INF.04 - Projektowanie, programowanie i testowanie aplikacji

Klasa abstrakcyjna to klasa oznaczona słowem kluczowym abstract. Nie można utworzyć jej obiektu bezpośrednio, ale może służyć jako baza dla innych klas.

Klasa abstrakcyjna może zawierać:
- pola,
- konstruktory,
- zwykłe metody z implementacją,
- metody abstrakcyjne, czyli metody bez ciała.

Metoda abstrakcyjna

Metoda abstrakcyjna określa tylko nagłówek metody. Nie zawiera kodu wykonywalnego.

abstract class Figura {
    abstract double Pole();
    abstract double Obwod();
}

Jeżeli klasa dziedziczy po klasie abstrakcyjnej i sama nie jest abstrakcyjna, musi zaimplementować wszystkie metody abstrakcyjne klasy bazowej.

Przykład implementacji

public class Prostokat extends Figura {
    private double a;
    private double b;

    public double Pole() {
        return a * b;
    }

    public double Obwod() {
        return 2 * a + 2 * b;
    }
}

W tym przykładzie Prostokat dziedziczy po Figura, dlatego musi mieć metody Pole() i Obwod() o takich samych nazwach, typach zwracanych i parametrach jak w klasie abstrakcyjnej.

Ważne zasady egzaminacyjne

  • Metoda abstrakcyjna nie może mieć ciała w klasie abstrakcyjnej.
  • Klasa konkretna musi zaimplementować wszystkie odziedziczone metody abstrakcyjne.
  • Nazwa metody musi być identyczna, np. Pole() to nie to samo co LiczPole().
  • Implementacja metody powinna mieć odpowiedni modyfikator dostępu, zwykle public, jeśli metoda ma być dostępna z zewnątrz.