Friday 3 June 2016

ஜாவாவில் final keyword எதெற்கெல்லாம் பயன்படுகின்றது?



ஜாவாவில் 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