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 coLiczPole(). - Implementacja metody powinna mieć odpowiedni modyfikator dostępu, zwykle
public, jeśli metoda ma być dostępna z zewnątrz.