Ključna reč final

Ključna reč final

Ključna reč final u Javi se koristi da ograniči korisnika. Može se koristiti u mnogim kontekstima. Final može biti:
  1. promenljiva
  2. metoda
  3. klasa
Ključna reč final može se primeniti sa promenljivama, final promenljiva koja nema vrednosti se naziva blank final promenljiva ili neinicijalizovana final promenljiva. Ona može biti inicijalizovana samo u konstruktoru. Blank final varijabla takođe može biti statička i biće inicijalizovana samo u statičkom bloku. Razmotrimo neke osnovne stvari o ključnoj reči final. Napomena: Ključna riječ final
  • zaustavlja promenu vrijednosti
  • zaustavlja preklapanje metoda
  • zaustavlja nasleđivanje

Final promenljiva

Ako bilo koju promenljivu proglasimo za final, ne možemo više menjati njenu vrednost (ona će biti konstanta). Primer final promenljive: Ovde imamo final varijablu speedlimit, pokušaćemo promeniti njenu vrednost, ali to neće biti moguće zato što jednom dodeljena vrednost final varijabli više ne može biti promenjena.
1
2
3
4
5
6
7
8
9
10
11
12
13
class Bike9{ 
 final int speedlimit=90; //final varijabla 
 void run(){ 
  speedlimit=400
 
 public static void main(String args[]){ 
 Bike9 obj=new  Bike9(); 
 obj.run(); 
 
} //kraj klase
Ispis na ekranu:
Compile Time Error

Final metoda

Ako se bilo koja metoda proglasi za final, ona se ne može preklopiti. Primer final metode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Bike{ 
  final void run(){System.out.println("vozi");} 
}    
class Honda extends Bike{ 
   void run(){System.out.println("vozi sigurno 100km/h");} 
     
   public static void main(String args[]){ 
   Honda honda= new Honda(); 
   honda.run(); 
   
}
Ispis na ekranu:
Compile Time Error

Final klasa

Ako bilo koju klasu proglasimo za final, ona se ne može naslediti. Primer final klase
1
2
3
4
5
6
7
8
9
10
11
12
13
final class Bike{} 
  
class Honda1 extends Bike{ 
  void run(){System.out.println("vozi sigurno 100km/h");} 
    
  public static void main(String args[]){ 
    Honda1 honda= new Honda(); 
    honda.run(); 
  
}
Ispis na ekranu:
Compile Time Error
Da li se final metoda može naslediti? Da, final metoda se može naslediti ali se ne može preklopiti. Napr.:
1
2
3
4
5
6
7
8
9
10
11
12
class Bike{ 
  final void run(){System.out.println("vozi...");} 
class Honda2 extends Bike{ 
   public static void main(String args[]){ 
     new Honda2().run(); 
   
}
Ispis na ekranu:
vozi...
Šta je blank ili neinicijalizovana final varijabla? Final varijabla koja nije inicijalizovana u vrijeme deklarisanja je poznata kao blank final varijabla. Ako želimo da kreiramo varijablu koja se inicijalizuje u vreme kreiranja objekta i pošto je jednom inicijalizovana više se ne može menjati, ovo je koristan način. Napr. PAN CARD broj zaposlenika. Može se inicijalizovati samo u konstruktoru. Primjer blank final varijable
1
2
3
4
5
6
class Student{ 
int id; 
String name; 
final String PAN_CARD_NUMBER; 
... 
}
Može li se inicijalizovati blank final varijabla? Da, ali samo u konstruktoru. Npr.:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Bike10{ 
  final int speedlimit; //blank final varijabla 
    
  Bike10(){ 
    speedlimit=70
    System.out.println(speedlimit); 
  
  
  public static void main(String args[]){ 
    new Bike10(); 
 
}
Ispis na ekranu:
70
Statička blank final varijabla Statička final varijabla koja nije inicijalizovana u vreme deklarisanja je poznata kao statička blank final varijabla. Ona se može inicijalizovati samo u statičkom bloku. Primer statičke blank final varijable:
1
2
3
4
5
6
7
class A{ 
  static final int data; //statička blank final varijabla 
  static{ data=50;} 
  public static void main(String args[]){ 
    System.out.println(A.data); 
 
}
Šta je final parametar? Ako deklarišemo bilo koji parametar kao final, ne možemo menjati njegovu vrednost.
1
2
3
4
5
6
7
8
9
10
11
12
13
class Bike11{ 
  int cube(final int n){ 
   n=n+2; //ne može se mijenjati pošto je n final 
   n*n*n; 
  
  public static void main(String args[]){ 
    Bike11 b=new Bike11(); 
    b.cube(5); 
 
}
Ispis na ekranu:
Compile Time Error
Da li se konstruktor može deklarisati kao final? Ne, pošto se konstruktor nikad ne nasleđuje.

Comments

comments

Close Menu
Show Buttons
Hide Buttons