ஜாவாவில் final keyword
மூன்று விதங்களில் பயன் படுகின்றது. மூன்று விதங்களிலும் யூசரை (user) ஏதாவது ஒன்று
செய்வதிலிருந்து தடை ஏற்படுத்துகின்றது.
செயல் படுத்தப்படும்
மூன்று விதங்கள்
1.
final
variable
2.
final
method
3.
final
class.
Final variable:
Final வேரியபிள்
என்பது constant ஆகும். ஒரு தடவை மதிப்பிருத்தி விட்டால் மீண்டும் அதன் மதிப்பை மாற்ற
இயலாது.
சான்று நிரல்-1:
package
sample;
public class
Sample {
final int MY_VALUE=50;
public void changeMyValue()
{
MY_VALUE=100;
}
public static void main(String[] args) {
Sample s1=new Sample();
s1.changeMyValue();
}
}
வெளியீடு:
Error:
run:
Exception in
thread "main" java.lang.RuntimeException: Uncompilable source code -
cannot assign a value to final variable MY_VALUE
Blank final variables:
ஒரு final
variable ஆனது அறிவிக்கப்படும் போதே மதிப்பிருத்தப்படா விட்டால் அது blank final
variable எனப்படுகின்றது. இதன் மதிப்பானது constructor ஆனதில் கண்டிப்பாக assign செய்யப்பட
வேண்டும்.இல்லையெனில் பிழை சுட்டி காட்டப்படும்.
சான்று நிரல்-2
package
sample;
public class
Sample {
final int MY_VALUE;
Sample()
{
MY_VALUE=50;
}
public void displayValue()
{
System.out.println(MY_VALUE);
}
public static void main(String[] args) {
Sample s1=new Sample();
s1.displayValue();
}
}
output:
50
Final method:
பொதுவாக பேஸ் கிளாஸில்
எழுதப்படும் மெத்தடை டெரிவ்டு கிளாஸில் அதே சிக்னேச்சரில் (மெத்தடின் பெயர் மற்றும்
ஆர்க்யூமெண்ட் டைப்) ஒரு மெத்தட் எழுதலாம் அது மெதட் ஒவெர் ரைடிங் எனப்படும். ஆனால்
ஃபைனல் என்று அறிவிக்கப்பட்ட மெத்தடை ஒவெர்ரைட் செய்ய இயலாது.
சான்று நிரல் -3
package
derived1;
class Base1
{
final void display()
{
System.out.println("Base");
}
}
public class
Derived1 extends Base1 {
void display()
{
System.out.println("Derived");
}
public static void main(String[] args) {
Derived1 d1=new Derived1();
d1.display();
}
}
output:
java.lang.VerifyError:
class derived1.Derived1 overrides final method display.
மேலே உள்ள நிரலில்
display என்கின்ற method final என்று அறிவிக்கபட்டதால் அந்த மெத்தடை Derived1 கிளாஸில்
ஒவெர் ரைட் செய்ய இயல வில்லை
ஃபைனல் கிளாசஸ்:
ஒரு ஃபைனல் என்று
அறிவிக்கப்பட்ட கிளாசை நீட்டுவிக்க (இன்ஹெரிட்)செய்ய இயலாது.இவை final class எனப்படும்.
சான்று நிரல்-4:
package
derived1;
final class
Base1
{
}
public class
Derived1 extends Base1 {
void display()
{
System.out.println("Derived");
}
public static void main(String[] args) {
Derived1 d1=new Derived1();
d1.display();
}
}
வெளியீடு:
java.lang.VerifyError:
Cannot inherit from final class
மேலே உள்ள நிரலில்
Base1 கிளாஸ் ஆனது ஃபைனல் என்று அறிவிக்கப்பட்டதால் அதை இன்ஹெரிட் செய்ய இயலவில்லை.
பின் குறிப்பு:
ஒரு கன்ஸ்ட்ரக்டர்
ஆனது எப்போதும் இன்ஹெரிட் ஆகாது. எனவே அதை final என அறிவிக்க இயலாது.
-முத்துகார்த்திகேயன்,மதுரை
No comments:
Post a Comment