Sobes.tech
Junior

Čo znamená kľúčové slovo 'static' v Jave?

sobes.tech AI

Odpoveď od AI

static v Jave sa používa na vyhlásenie prvkov patriacich triede, nie konkrétnemu inštanciu objektu.

Kľúčové slovo môže byť použité na:

  • Premenné (polia):
    • Jedna kópia premennej existuje pre celú triedu, bez ohľadu na počet vytvorených inštancií.
    • K nej je možné pristupovať cez názov triedy (napríklad ClassName.staticVariable).
    // Príklad statickej premennej
    public class MyMath {
        public static final double PI = 3.14159;
        // Prístup: MyMath.PI
    }
    
  • Metódy:
    • Metóda patrí triede, nie konkrétnemu objektu.
    • Môže byť volaná cez názov triedy (napríklad ClassName.staticMethod()).
    • Nemá prístup k nestatickým členom triedy (premenným alebo metódam), pretože sú viazané na inštanciu.
    // Príklad statickej metódy
    public class Calculator {
        public static int add(int a, int b) {
            return a + b;
        }
        // Volanie: Calculator.add(5, 3)
    }
    
  • Bloky inicializácie:
    • Vykonáva sa raz pri načítaní triedy do JVM.
    • Používa sa na inicializáciu statických polí alebo vykonanie iných akcií súvisiacich s triedou.
    // Príklad statického bloku
    public class DataInitializer {
        static {
            // Kód, ktorý sa vykoná pri načítaní triedy
            System.out.println("DataInitializer class loaded.");
        }
    }
    
  • Vnorené triedy (inner/nested classes):
    • Statická vnorená trieda sa správa ako bežná trieda vyššej úrovne, s výnimkou toho, že sa nachádza vo vnútri inej triedy.
    • Nevyžaduje vytvorenie inštancie vonkajšej triedy na prístup k nej.
    • Má prístup iba k statickým členom vonkajšej triedy.
    // Príklad statickej vnorenej triedy
    public class OuterClass {
        static class StaticInnerClass {
            // Polia a metódy statickej vnorenej triedy
        }
    }
    // Prístup: OuterClass.StaticInnerClass inner = new OuterClass.StaticInnerClass();
    

Použitie static pomáha pri vytváraní utilitárnych tried, uchovávaní spoločných dát a riadení stavu na úrovni triedy.