មេរៀនទី១៨: Final Keyword

final keyword ក្នុងកម្មវិធី java ត្រូវបានប្រើដើម្បីកំណត់ user ដែល final keyword អាចប្រើក្នុង context ច្រើន:
1.    អថេរ variable
2.    method
3.    class
ពាក្ស final keyword អាចអនុវត្តជាមួយអថេរជាច្រើន ហើយអថេរ final ដែលមិនមានតម្លៃ វាត្រូវបានហោះអថេរ blank final variable ឬមិនអាចចាប់ផ្តើមអថេរ final variable។
Java1) អថេរ final variable
ប្រសិនបើ លោកអ្នកបង្កើតអថេរដូចជា final, លោកអ្នកអាចប្តូរ final variable។
ឧទាហរណ៍នៃ final variable
class Bike9{
final int speedlimit=90;//final variable
void run(){
speedlimit=400;
}
public static void main(String args[]){
Bike9 obj=new  Bike9();
obj.run();
}
}//end of class
Output:Compile Time Error

2) final method
ប្រសិនបើ លោកអ្នកបង្កើត method មួយចំនួនដូចជា final លោកអ្នកមិនអាច override លើវា
ឧទាហរណ៍នៃ final method
class Bike{
final void run(){System.out.println(“running”);}
}

class Honda extends Bike{
void run(){System.out.println(“running safely with 100kmph”);}

public static void main(String args[]){
Honda honda= new Honda();
honda.run();
}
}
Output:Compile Time Error

3) final class
ប្រសិនបើលោកអ្នកបង្កើត class មួយចំនួនដូចជា final, លោកអ្នកមិនអាច extend វា។
ឧទាហរណ៍នៃ final class
1.    final class Bike{}
2.
3.    class Honda1 extends Bike{
4.      void run(){System.out.println(“running safely with 100kmph”);}
5.
6.      public static void main(String args[]){
7.      Honda1 honda= new Honda();
8.      honda.run();
9.      }
10.    }
Output:Compile Time Error

Q) Is final method inherited?
Ans) Yes, final method is inherited but you cannot override it. For Example:
1.    class Bike{
2.      final void run(){System.out.println(“running…”);}
3.    }
4.    class Honda2 extends Bike{
5.       public static void main(String args[]){
6.        new Honda2().run();
7.       }
8.    }
Output:running…

ឧទាហរណ៍នៃ blank final variable
1.    class Student{
2.    int id;
3.    String name;
4.    final String PAN_CARD_NUMBER;
5.    …
6.    }
យើងអាចចាប់ផ្តើមអថេរ blank final variable?
class Bike10{
final int speedlimit;//blank final variable

Bike10(){
speedlimit=70;
System.out.println(speedlimit);
}

public static void main(String args[]){
new Bike10();
}
}
Output:70

អថេរ static blank final
អថេរ static final មិនអាចចាប់ផ្តើមការប្រកាស ដូចចាអថេរ static blank final variable. It can be initialized only in static block.
ឧទាហរណ៍នៃ static blank final variable
class A{
static final int data;//static blank final variable
static{ data=50;}
public static void main(String args[]){
System.out.println(A.data);
}
}

ប៉ារ៉ាម៉ែត្រ final ជាអ្វី?
ប្រសិនបើប្រកាសប៉ារ៉ាម៉ែត្រ final លោកអ្នកអាចផ្លាស់ប្តូរតម្លៃវា
class Bike11{
int cube(final int n){
n=n+2;//can’t be changed as n is final
n*n*n;
}
public static void main(String args[]){
Bike11 b=new Bike11();
b.cube(5);
}
}
Output:Compile Time Error