Method Overloading in Java

Method Overloading in Java: Method Overloading Java का एक ऐसा Concept है जिसमें हम एक ही Class में एक ही नाम के कई Methods Create कर सकते हैं और सभी Methods अलग-अलग प्रकार से काम करते हैं। जब किसी Class में एक ही नाम के एक से अधिक Methods Create किए जाते हैं, तो इस प्रकार के Methods को Overloaded Methods कहते हैं।

उदाहरण के लिए मान लो कि हमें किसी Integer संख्‍या का Square ज्ञात करने के लिए एक Method लिखना है। हम ये Method निम्नानुसार लिख सकते हैं:

	public int intSquare( int number )
	{
		int square = number * number;
		return square;
	}

मानलो हमें 10 का Square ज्ञात करना है, तो 10 का Square ज्ञात करने के लिए इस Method को हम निम्नानुसार Call कर सकते हैं:

      intSquare(10);

अब यदि हमें किसी double प्रकार के मान का Square ज्ञात करना हो, तो हमें निम्नानुसार एक और Square() Method Create करना होगा:

	public double doubleSquare( double number )
	{
		double square = number * number;
		return square;
	}

इसी तरह से यदि हमें long प्रकार के मान का Square ज्ञात करना हो, तो हमें निम्नानुसार एक और Method Create करना होगा:

	public long longSquare( long number )
	{
		long square = number * number;
		return square;
	}

यदि हम ध्‍यान से देखें तो केवल किसी संख्‍या का Square ज्ञात करने के लिए संख्‍या के Data Type के अनुसार हमें निम्नानुसार तीन नाम ध्‍यान रखने होंगे:

      intSquare()

      doubleSquare()

      longSquare()

यदि कुछ ऐसा हो सके कि एक Programmer को केवल एक ही नाम ध्‍यान रखना पडे और Program स्वयं ये तय कर ले कि उसे किस प्रकार के मान के लिए किस Method को Use करना है, तो Programmer के लिए कुछ आसानी हो जाएगी और उसे एक ही प्रकार के काम के लिए एक से अधिक Methods के नाम याद रखने की जरूरत नहीं होगी। जावा में हम उपरोक्त तीनों Methods को समान नाम दे सकते हैं।

यानी हम यदि उपरोक्त तीनों Methods को अलग-अलग नाम देने के बजाय केवल square() नाम दे दें] और बाकी पूरी Description को ज्यों का त्यों निम्नानुसार लिख दें] तो भी जावा का Compiler कोई Error Generate नहीं करता है।

	public int square( int number )
	{
		int square = number * number;
		return square;
	}
	
	public double square( double number )
	{
		double square = number * number;
		return square;
	}
	
	public long square( long number )
	{
		long square = number * number;
		return square;
	}

यदि हम इन तीनों Methods को किसी Class में Define कर दें] तो इन Methods को Overloaded Methods कह सकते हैं, क्योंकि इन सभी Methods के नाम समान हैं। चलिए, इसे समझने के लिए हम CalculateSquare Class Develop करते हैं, जो कि निम्नानुसार है:

	class CalculateSquare
	{
		public void square()
		{
			System.out.println("No Parameter Method Called");
		}
		
		public int square( int number )
		{
			int square = number * number;
			System.out.println("Method with Integer Argument Called");
			return square;
		}
		
		public double square( double number )
		{
			double square = number * number;
			System.out.println("Method with Double Argument Called");
			return square;
		}
		
		public float square( float number )
		{
			float square = number * number;
			System.out.println("Method with float Argument Called");
			return square;
		}
	}

इस Class का प्रयोग हम किसी Program में कर सकते हैं। Methods की Overloading को Practically समझने के लिए निम्न Program देखिए:

// Program
	public class OverLoadedMethodDemonstraton
	{
		public static void main(String [] args)
		{
			CalculateSquare firstNumber = new CalculateSquare();
			CalculateSquare secondNumber = new CalculateSquare();
			CalculateSquare thirdNumber = new CalculateSquare();
			CalculateSquare forthNumber = new CalculateSquare();
			
			int intResult;
			double doubleResult;
			float floatResult;
			
			forthNumber.square();
			
			intResult = firstNumber.square(11);
			System.out.println("Value of integer = " + intResult);
			
			doubleResult = secondNumber.square(10.25);
			System.out.println("Value of double = " + doubleResult);
			
			floatResult = thirdNumber.square(2.4f);
			System.out.println("Value of float = " + floatResult);
		}	
	}

// Output
   No Parameter Method Called

   Method with Integer Argument Called
      Value of integer = 121

   Method with Double Argument Called
      Value of double = 105.0625

   Method with float Argument Called
      Value of float = 5.76

आप सोच सकते हैं कि जावा Compiler ये किस तरह से तय करता है कि उसे किस मान के लिए किस Method को Call करना है, जबकि Class में Define किए गए सभी Methods के नाम समान हैं\

इस सवाल का जवाब ये है कि जावा Compiler Method को Call करते समय जो मान Argument के रूप में Method के Parenthesis में प्रदान किया जाता है, उस मान के Data Type के आधार पर ये तय करता है, कि उसे Overloaded Method के किस Version को Call करना है।

हमने हमारे Program में सबसे पहले square() Method के Parenthesis में कोई Argument प्रदान नहीं किया है। इस स्थिति में Compiler Class के उस Method को Call करता है, जिसमें Argument को प्राप्त करने के लिए किसी Parameter को Define नहीं किया गया है। यानी Compiler Class के निम्न Method को forthNumber Object के लिए Call करता है:

	public void square()
	{
		System.out.println("No Parameter Method Called");
	}

इसी तरह से जब firstNumber Object के लिए square() Method को Call किया जाता है और Argument के रूप में एक Integer प्रकार का मान Method के Parenthesis में प्रदान किया जाता है, तब Compiler square() Method के उस Version को Call करता है, जिसमें Parameter के रूप में एक Integer प्रकार का Argument प्राप्त करने के लिए एक Variable Declare किया गया है। यानी:

        intResult = firstNumber.square(11);

Statement के Reference में निम्न Method Call होता है:

	public int square( int number )
	{
		int square = number * number;
		System.out.println("Method with Integer Argument Called");
		return square;
	}

इसी तरह से जब निम्न Statement Execute होता है:

floatResult = thirdNumber.square(2.4f);

तब इस Statement के Reference में square() Method का निम्न Version Execute होता है:

	public float square( float number )
	{
		float square = number * number;
		System.out.println("Method with float Argument Called");
		return square;
	}

इस तरह से हम एक ही नाम के एक से अधिक Methods को किसी Class में Define कर सकते हैं, जिसे Method Overloading करना कहते हैं और इस तरह से Define किए गए Methods के Arguments के Data Type के आधार पर जावा का Compiler स्वयं ही किसी Object के लिए उचित Method Call कर लेता है। (Method Overloading in Java)

finalize Method in Java
Constructor in Java

Java Programming Language in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Java in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

Java Programming Language in Hindi | Page: 682 | Format: PDF

BUY NOW GET DEMO REVIEWS