Java - final ključna riječ


U Javi se final ključna riječ koristi za označavanje konstanti. Može se koristiti s varijablama, metodama i klasama. Jednom kada je bilo koji entitet (varijabla, metoda ili klasa) proglašen final, može se dodijeliti samo jednom. To je:

  • final - varijabla ne može se ponovno inicijalizovati s drugom vrijednošću
  • final - metoda se ne može nadjačati
  • final - klasa se ne može produžiti


Java final varijable

U Javi ne možemo promijeniti vrijednost final varijable. Na primjer:

class Main {
  public static void main(String[] args) {

    // kreiranje final variable
    final int AGE = 32;

    // pokušaj promjene final variable
    AGE = 45;
    System.out.println("Godine: " + AGE);
  }
}

U gore navedenom programu stvorili smo final varijablu pod nazivom age. Pokušali smo promijeniti vrijednost final varijable. Kada pokrenemo program, dobićemo grešku kompilacije sa sljedećom porukom.

cannot assign a value to final variable AGE
    AGE = 45;
    ^


Javna final metoda

Prije nego što naučite o final metodama i final klasama (overridden), pobrinite se da znate o Java nasljeđivanju. U Javi podređena klasa ne može nadjačati final metodu. Na primjer:

class FinalDemo {
    // kreiranje final metode
    public final void display() {
      System.out.println("Ovo je final metoda.");
    }
}

class Main extends FinalDemo {
  // pokušava nadjačati final metodu
  public final void display() {
    System.out.println("Final metoda je poništena.");
  }

  public static void main(String[] args) {
    Main obj = new Main();
    obj.display();
  }
}

U gornjem primjeru stvorili smo final metodu koja se zove display() unutar klase FinalDemo. Ovdje klasa Main nasljeđuje klasu FinalDemo. Pokušali smo nadjačati final metodu u glavnoj klasi. Kada pokrenemo program, dobićemo grešku kompilacije sa sljedećom porukom.

display() in Main cannot override display() in FinalDemo
  public final void display() {
                    ^
  overridden method is final


Java final klase (class)

U Javi final klasu ne može nasljediti druga klasa. Na primjer:

// kreiranje final klase (class)
final class FinalClass {
  public void display() {
    System.out.println("Ovo je final metoda.");
  }
}

// tpokušajte produžiti final class
class Main extends FinalClass {
  public  void display() {
    System.out.println("final metoda je poništena.");
  }

  public static void main(String[] args) {
    Main obj = new Main();
    obj.display();
  }
}

U gornjem primjeru stvorili smo final klasu pod nazivom FinalClass. Ovdje smo pokušali naslijediti final klasu od strane Main klase. Kada pokrenemo program, dobićemo grešku kompilacije sa sljedećom porukom.

cannot inherit from final FinalClass
class Main extends FinalClass {
                   ^