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:
Da li se final metoda može naslediti? Da, final metoda se može naslediti ali se ne može preklopiti. Napr.:
Š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
Može li se inicijalizovati blank final varijabla? Da, ali samo u konstruktoru. Npr.:
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:
Šta je final parametar? Ako deklarišemo bilo koji parametar kao final, ne možemo menjati njegovu vrednost.
Da li se konstruktor može deklarisati kao final? Ne, pošto se konstruktor nikad ne nasleđuje.
- promenljiva
- metoda
- klasa
- 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 |
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... |
1
2
3
4
5
6 |
class Student{ int id; String name; final String PAN_CARD_NUMBER; ... } |
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 |
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); } } |
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 |