Klasa finalna
Słownik kwalifikacji INF.04 - Projektowanie, programowanie i testowanie aplikacji
Co to jest klasa finalna?
Klasa finalna to klasa, po której nie można dziedziczyć. Oznacza to, że nie może być klasą bazową/nadrzędną dla innych klas.
Nie należy jej mylić z klasą abstrakcyjną. Klasa abstrakcyjna nie może mieć bezpośrednio tworzonych obiektów i często służy jako podstawa dla klas pochodnych. Klasa finalna działa odwrotnie: może zwykle mieć obiekty, ale blokuje dalsze dziedziczenie.
Zastosowanie
Klasy finalne stosuje się, gdy projektant kodu chce:
- uniemożliwić modyfikowanie zachowania klasy przez dziedziczenie,
- zwiększyć bezpieczeństwo i przewidywalność kodu,
- jasno oznaczyć, że dana klasa jest końcowym elementem hierarchii.
Przykład w Javie
final class KontoBankowe {
void pokazSaldo() {
System.out.println("Saldo konta");
}
}
// Błąd: nie można dziedziczyć po klasie finalnej
// class KontoFirmowe extends KontoBankowe { }
Przykład w C
W języku C# odpowiednikiem klasy finalnej jest klasa oznaczona słowem kluczowym sealed.
sealed class KontoBankowe
{
public void PokazSaldo()
{
Console.WriteLine("Saldo konta");
}
}
// Błąd: nie można dziedziczyć po klasie sealed
// class KontoFirmowe : KontoBankowe { }
Najważniejsze do egzaminu
- Klasa abstrakcyjna: nie można utworzyć jej obiektu, służy jako baza.
- Klasa finalna: można zwykle utworzyć jej obiekt, ale nie można po niej dziedziczyć.