इंटरफेस (Interface)

जावा में मल्टीपल इनहेरीटेन्स के लिए इंटरफेस का प्रयोग किया जाता है। एक इंटरफेस में क्लास की भांति ही मैथड्स तथा वेरिएबल्स होते हैं, किन्तु इंटरफेस में केवल public abstract मैथड तथा public static final वेरिएबल ही हो सकते हैं। इंटरफेस को निम्न प्रकार बनाया जा सकता है -

interface InterfaceName
{
	variable declaretion;
	method declaration;
}

नीचे दिए गए उदाहरण में एक वृत्त का क्षेत्रफल ज्ञात करने का प्रोग्राम बनाया गया है जिसे एक इंटरफेस की सहायता से बनाया गया है।

interface Area
{
  float pi = 3.14f;
  void compute(float x);
}
class Circle implements Area
{
  public void compute(float x)
  {
    System.out.println("Area of circle=" + (pi*x*x));
   }
}
class Demo
{
  public static void main(String arr[])
  {
    Circle c = new Circle();
    c.compute(10);
  }
}

Output:

Area of circle = 314.0

इंटरफेस में वेरिएबल्स के पहले final नहीं लगाने के बावजूद भी वह final वेरिएबल्स ही होते हैं।

एक इंटरफेस को दूसरे इंटरफेस में इनहेरिट करना

क्लास की भांति इंटरफेस को भी आपस में इंहेरिट किया जा सकता है।

interface A
{
	. . . . . .
	. . . . . .
}
interface B extends A
{
	. . . . . .
	. . . . . .
}

एक से अधिक इंटरफेस को भी निम्न प्रकार से इंहेरिेट किया जा सकता है।

interface A
{
	. . . . . .
	. . . . . .
}
interface B
{
	. . . . . .
	. . . . . .
}
interface C extends A, B
{
	. . . . . .
	. . . . . .
}

इंटरफेस को क्लास में इनहेरिट करना

किसी इंटरफेस की प्रोपर्टीज़ को क्लास में प्रयोग करने के लिए implements कीवर्ड का प्रयोग किया जाता है।

class ClassName implements InterfaceName
{
. . . . . .
. . . . . .
}

किसी क्लास में अन्य क्लास तथा इंटरफेस दोनों को निम्न प्रकार से इंहेरिट किया जा सकता है-

class ClassName extends SuperClassName implements InterfaceName
{
. . . . . .
. . . . . .
}

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

class Theory
{
	int h, e;
	void getMarks(int x, int y)
	{
		h = x; e = y;
	}
	void showMarks()
	{
		System.out.println("Hindi=" + h);
		System.out.println("Eng.=" + e);
	}
}
interface Practical
{
	int p = 75;
	void showPracticalMarks();
}
class Marks extends Theory implements Practical
{
	public void showPracticalMarks()
	{
		System.out.println("Practical=" + p);
	}
	void showTotalAndPercentage()
	{
		System.out.println("Total=" + (h+e+p));
		System.out.println("Per.=" + ((h+e+p)/300.0f*100));
	}
}		
class Demo
{
	public static void main(String arr[])
	{
		Marks m = new Marks();
		m.getMarks(70, 75);
		m.showMarks();
		m.showPracticalMarks();
		m.showTotalAndPercentage();
	}
}

Output:

Hindi = 70
Eng. = 75
Practical = 75
Total = 220
Per. = 73.333336

इंटरफेस तथा एब्सट्रेक्ट क्लास में अंतर

इंटरफेस तथा एब्सट्रेक्ट क्लास दानों के ही मैथड्स को चाइल्ड क्लास में डिफाइन करना आवश्यक होता है। किन्तु फिभी इन दोनों में कुछ अंतर होते हैं जो कि निम्नानुसार हैंः

इंटरफेस एब्सट्रेक्ट क्लास
इंटरफेस में केवल एब्सट्रेक्ट मैथड्स ही होते हैं। एब्सट्रेक्ट क्लास में नाॅन-एब्सट्रेक्ट मैथड्स भी हो सकते हैं।
इंटरफेस में कंस्ट्रक्टर नहीं बनाए जा सकते। एब्सट्रेक्ट क्लास में कंस्ट्रक्टर बनाए जा सकते।
इंटरफेस में वेरिएबल्स केवल static तथा final टाइप के ही हो सकते हैं। एब्सट्रेक्ट क्लास में सभी प्रकार के वेरिएबल्स हो सकते हैं।
इंटरफेस का प्रयोग करके मल्टीपल इनहेरीटेन्स को प्रयोग किया जा सकता है। एब्सट्रेक्ट क्लास का प्रयोग करके ऐसा नहीं किया जा सकता है।
सुझाव / कमेंट