Przejdź do głównej treści
  1. Strona główna
  2. Słownik
  3. INF.04
  4. Klasa finalna

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ć.