Konstanty Konstanty v Javě • Konstanty slouží pro pojmenování určitých konkrétních hodnot se zvláštním významem v programu — tzv. magic numbers, kde nemusí být na první pohled zřejmé, proč je to zrovna právě ta hodnota. • Proto si ji rozumně pojmenujeme a pak používáme tento identifikátor místo přímé hodnoty. • Může jít i o objektové typy (např. konstanta typu Person).  Všeobecně platí: raději víc konstant než míň. Definice konstanty • Konstanty jsou vždy: ◦ statické (static) — stačí nám jedna pro celou třídu ◦ neměnné (final) — je to konstanta, tudíž pomocí final zajistíme neměnnost • Konstanta může být: ◦ privátní (dobře možné, když ji nechceme používat mimo třídu) ◦ veřejná (nicméně asi obvyklejší, většinou má širší použití) Příklad konstanty • Obvykle se nastavuje takto přímo přiřazením hodnoty public static final int MAX_PEOPLE_COUNT = 100; public boolean maxPeopleCountReached() {   return peopleCount >= MAX_PEOPLE_COUNT; } ... int constant = Person.MAX_PEOPLE_COUNT; Klíčové slovo final • Slovo final způsobuje, že daná hodnota se v proměnné nemůže změnit. • V objektové proměnné je uložena adresa (odkaz), 1 • final odkaz se tedy změnit nemůže, ale vnitřek (atributy) objektu ano • Proto se může kombinovat s neměnnými (immutable) objekty, u nichž se vnitřek nemění Příklad final objektová proměnná final int i = 1; i = 2; // cannot be done final Person p = new Person("Honza"); p = new Person("Pavel"); // cannot be done p.setName("Pavel"); // dirty hack  Konstanty mají kromě slova final i slovo static protože ji chceme právě jednou. 2