Slovicko final oznacuje v Jave vsetko, co je konecne definovane, co nie je mozne zmenit. Pouziva sa v troch pripadoch. final class, final metoda, final datovy clen.
final class ...
Ak pri definicii triedy uvedieme final, potom povazujeme tuto triedu za konecnu tzn., ze nie je mozne odvodit potomka od takejto triedy. Pri pokuse o to nas zastavi uz 'kompilator'.
Definovat nejaku triedu ako final ma vyznam:Priklad
- z bezpecnostnych dovodov; Jednym zo sposobov narusenia systemu je odvodit novu triedu, prepisat jej metody a potom ju nahradit starou. Z tohoto dovodu su niektore triedy v 'classes.zip' definovane ako final, napr. trieda java.lang.String.
- z dovodu dizajnu; mozeme si mysliet, ze nasa trieda je uz tak perfektna, ze uz nebudeme potrebovat od nej odvodit ziadnu triedu.
final class Najlepsia { // telo triedy }
final metoda
Rezervovane slovicko final je mozne pouzit aj v pripade metod triedy. Takuto metodu nie je mozne prepisat v jej potomkovi, povazuje sa za konecnu.
Priklad>
class NovaTrieda { // ... final void Print(); // ... }
final datovy clen
Napriek tomu, ze som to uz spomenul v kapitole O premennych rozhodol som sa zopakovat to opet.
Ak je lubovolny datovy clen definovany ako final, potom nie je mozne menit jeho obsah - je to konstanta.
Priklad
class MenoTriedy { ... final int a = 3204; // 'a' je konstanta ... }