फाइनल वेरिएबल तथा फाइनल मैथड (Final Variable and Method)

फाइनल वेरिएबल वह वेरिएबल होते हैं जिनकी वैल्यू को प्रोग्राम के एग्ज़िक्यूषन के दौरान बदला नहीं जा सकता। ये वेरिएबल व्यवहार में स्टैटिक वेरिएबल की भांति ही होते हैं अर्थात ये प्रत्येक आॅब्जेक्ट के लिए मैमोरी में अलग से स्थान नहीं लेते। इन्हे निम्न प्रकार से डिक्लेअर किया जाता है -

final int a;

यदि हम एक ऐसा मैथड बनाना चाहते हैं जिसे ओवरराइड नहीं किया जा सके तो उस मैथड के पहले final कीवर्ड का प्रयोग निम्न प्रकार से किया जाता है -

final void show()
{
  . . . . . . . . .
  . . . . . . . . .
  . . . . . . . . .
}

नीचे दिए गए उदाहरण में एक क्लास A है जिसमें एक वेरिएबल pi तथा मैथड show() को final बनाया गया है। अर्थात् यदि हम pi के मान को बदलना चाहें या show( ) मैथड को ओवरराइड करना चाहें तो प्रोग्राम में error आ जाएगी।

class Demo
{
  public static void main(String arrr[])
  {
    final float pi = 3.14f;
    float area, r = 10;
    area = pi * r * r;
//    pi = 3.6f;
    System.out.println("Area = " + area);

  }
}

Output:

Area = 314.0

नीचे दिए गए उदाहरण में एक क्लास A है जिसमें एक मैथड show( ) को final बनाया गया है। यदि हम show() मैथड को ओवरराइड करते हैं तो प्रोग्राम में error आ जाएगी।

class A
{
  int a;
  void get(int x)
  {
    a = x;
  }
  final void show()
  {
    System.out.println("a = " + a);
  }
}
class B extends A
{
  int b;
  void getb(int x, int y)
  {
    a = x; b = y;
  }
  /*void show()
  {
    System.out.println("a = " + a);
    System.out.println("b = " + b);
  }*/
}
class Demo
{
  public static void main(String arr[])
  {
    B ob = new B();
    ob.getb(23, 34);
    ob.show();
  }
}

Output:

a = 23

Final क्लास

यदि हम एक ऐसी क्लास बनाना चाहते हैं जिसे इनहेरिट नहीं किया जा सके तो उसे बनाते समय final कीवर्ड का प्रयोग किया जाता है तथा ऐसी क्लास को फाइनल क्लास कहते हैं।

final class A
{
	. . . . . . . . .
	. . . . . . . . .
	. . . . . . . . .
}

नीचे दिए गए उदाहरण में एक क्लास A है जिसे final बनाया गया है। यदि हम A को इनहेरिट करते हैं तो प्रोग्राम में error आ जाएगी।

final class A
{
  int a;
  void get(int x)
  {
    a = x;
  }
  void show()
  {
    System.out.println("a=" + a);
  }
}
class B extends A
{
  int b;
  void getb(int x, int y)
  {
    a = x; b = y;
  }
  void show()
  {
    System.out.println("a=" + a);
    System.out.println("b=" + b);
  }
}
class Demo
{
  public static void main(String arrr[])
  {
    B ob=new B();
    ob.getb(23, 34);
    ob.show();
  }
}

Output:

Error in Compilation
सुझाव / कमेंट