Last Updated on May 30, 2022 by RAJENDRAPRASAD
Polymorphism in java in Hindi – Hello दोस्तों rajhindime.in में आपका स्वागत है |
दोस्तों, पिछले पोस्ट Inheritance in Java in Hindi में आपने जाना कि, Inheritance क्या है , यह कितने types के होते हैं | इनका Java में क्या महत्त्व है | इसे कैसे achieve करते हैं आदि के बारे में विस्तार से जाना |
आज के इस पोस्ट Polymorphism in Java in Hindi में आप जानेंगे कि, Polymorphism क्या है , यह कितने types के होते हैं | इनका Java में क्या महत्त्व है, और इसे कैसे achieve करते हैं |
आइए सबसे पहले जाने कि Polymorphism का मतलब क्या होता है ?
Polymorphism यह शब्द Greek भाषा के दो शब्दों से लिया गया है
पहला शब्द है “Poly” जिसका अर्थ है Many अर्थात बहुत ज्यादा, दूसरा शब्द है “Morphs” जिसका अर्थ है Forms अर्थात रूप
polymorphism उसे कहते हैं, जिसके बहुत सारे रूप (forms) होते हैं |
Real life example:
एक Person में एक ही समय अलग – अलग characteristics होती है ,जैसे एक आदमी, एक ही समय पर पुत्र, पति, पिता, Employee इत्यादि हो सकता है |
Situation के अनुसार वह अलग – अलग तरीको से बर्ताव अर्थात behave करता है, इसे ही polymorphism कहते हैं |
Other Examples:
Water (पानी) – जिसकी तीन form होती है solid (ठोस), liquid (द्रव) और gas (भाप)
Shape (आकार) – जिसके अनेकों forms होते हैं जैसे circle (वृत्त), square (वर्ग), rectangle (आयत) इत्यादि |
Sound (आवाज़) – जिसके अनेकों forms होते हैं जैसे Barking (कुत्ते का भौकना), Roar (शेर का दहाड़ना) इत्यादि |
ऊपर के सारे examples में चीज़ एक ही है, परन्तु उसके forms अलग – अलग हैं |
ठीक उसी तरह java में एक ही method के हम अलग – अलग forms create कर सकते हैं |
Java में polymorphism, method का use करके achieve किया जाता है |
Polymorphism in Java/Polymorphism क्या है ?
Polymorphism उस ability को दर्शाता है, जिसमें एक class , किसी method को अलग-अलग implementation provide करता है, अर्थात यहाँ एक ही method, एक ही functionality (कार्य) को अलग-अलग तरीकों से पूरा करता है |
Polymorphism = a single task in different ways
Program 1:
class Person {
void behave() {
System.out.println("Behave like Person");
}
}
class Son extends Person {
void behave() {
System.out.println("Behave like Son");
}
}
class Husband extends Person {
void behave() {
System.out.println("Behave like Husband");
}
}
class Father extends Person {
void behave() {
System.out.println("Behave like Father");
}
}
class Employee extends Person {
void behave() {
System.out.println("Behave like Employee");
}
}
public class Main {
public static void main(String[] args) {
Person obj;
obj = new Person();
obj.behave();
obj = new Son();
obj.behave();
obj = new Husband();
obj.behave();
obj = new Father();
obj.behave();
obj = new Employee();
obj.behave();
}
}
OutPut:
Behave like Person
Behave like Son
Behave like Husband
Behave like Father
Behave like Employee
ऊपर के example में,
हमने एक super-class Person तथा उसके चार sub-class Son, Husband, Father तथा Employee बनाएँ हैं और एक ही method define किया है behave() |
यहाँ behave () method का उद्देश्य behaviour (बर्ताव) को show करना है, जबकि Son का behaviour Father से अलग है , Father का behavior Husband से अलग है इत्यादि |
इस तरह यहाँ सारे class के लिए method का name एक ही है behave (), परन्तु उसका behaviour अलग – अलग class में अलग – अलग है |
इस तरह हम behave () method को polymorphic भी कह सकते हैं, क्योकि इसका behaviour class के अनुसार change होता रहता है |
Why Polymorphism/polymorphism क्यों जरूरी है ?
1. यह हमें consistent code create करने में help करता है | ऊपर के program में हम behaveFather (), behaveHusband (), behaveEmployee () जैसे method create कर सकते थे, वह भी सही work करते , फिर भी सारे class के लिए अलग-अलग method लिखने से code inconsistent हो जाता |
इसे solve करने के लिए, polymorphism हमें allow करता है कि हम एक ही method create करें जिसका behaviour अलग-अलग class में अलग-अलग हो |
2. polymorphism का use करके हम single reference variable create करते हैं, जो multiple data value को store करते हैं
ऊपर के example में हमने केवल super class का ही reference variable obj create किया है, जो सभी sub class के objects को store करता है |
इस तरह यहाँ “obj” reference variable , यह एक polymorphic variable है |
3. यह code को reusability प्रदान करता है, एक class के लिए लिखे हुए code को बार – बार use किया जा सकता है, साथ ही साथ कोई भी code के behaviour को change कर सकता है (child class बना कर), बिना original code को change किए |
NOTE: System.out.println(); में println() method, polymorphism का एक example है, क्योंकि इसका use different types के data type जैसे int, char, String इत्यादि को print करने के लिए किया जाता है |
Types of polymorphism
Java में इसके दो types हैं |
1. Compile time Polymorphism
NOTE: Compile time polymorphism को method overloading तथा operator overloading का use करके implement किया जाता है, जबकि Run time polymorphism को method overriding का use करके implement किया जाता है |
Compile time Polymorphism:
इसे static polymorphism अथवा early binding भी कहते हैं |
यह compilation process के दौरान ही resolve होता है, इसलिए इसे Compile time polymorphism कहते हैं
overloaded method को, class के reference variable का use करके call किया जाता है
को method overloading तथा operator overloading का use करके achieve किया जाता है |
Method Overloading:
– इसमें हम एक या एक से अधिक (multiple) method बनाते है, जिनके name same होते हैं
– सभी overloaded methods same class में ही होने चाहिए
– सभी overloaded methods के signature different होने चाहिए
signature different होने के लिए, नीचे लिखे conditions में से कम से कम एक condition जरूर पूरा होना चाहिए |
a. paramether की संख्या (number)
b. paramethers के क्रम (sequence)
c. paramethers के data types
Method overloading by changing the number of parameters:
इसमें overloaded methods में parameters के number different होते हैं |
Example:
show(int a);
show(int a, int b);
ऊपर दिए हुए example में पहले show () method में एक parameter है, जबकि दूसरे show () method में दो parameters हैं |
जब भी method को call किया जाता है, तब compiler method में pass किए गए arguments के numbers को देखता है और decide करता है कि, किस method को call करना है |
Program 2 :
public class MethodOverloadingDemo1 {
void show(int a) {
System.out.println("Number is " + a);
}
void show(int a, int b) {
System.out.println("First number is " + a + " and second number is " + b);
}
public static void main(String[] args) {
MethodOverloadingDemo1 dm1 = new MethodOverloadingDemo1();
dm1.show(10);
dm1.show(10, 20);
}
}
OutPut:
Number is 10
First number is 10 and second number is 20
ऊपर के program में, show (int a) तथा show (int a , int b) दो overloaded methods हैं, जो respectively (कमशः) एक तथा दो parameter को show करते हैं
show() method को call करने के दौरान,
जब हमने dm1.show(10) लिखा जिसमें केवल एक argument किया गया , इसलिए show (int a ) method call हुआ जब हमने dm1.show(10,20) लिखा जिसमें दो argument pass किया गया, इसलिए show(int a, int b) method call हुआ |
Method overloading by changing the data type of parameters:
इसमें overloaded methods में parameters के data types different होते हैं |
Example:
show(int a);
show(float a);
ऊपर दिए हुए examples में, पहले show () method के parameter में int data type है, जबकि दूसरे show () method के parameter में float data type है | जब भी method को call किया जाता है, तब compiler method में pass किए गए arguments के data type को देखता है और decide करता है कि किस method को call करना है |
Program 3:
public class MethodOverloadingDemo2 {
void show(int a) {
System.out.println("Number is " + a);
}
void show(float a) {
System.out.println("Number is " + a);
}
public static void main(String[] args) {
MethodOverloadingDemo2 dm1 = new MethodOverloadingDemo2();
dm1.show(10);
dm1.show(9.789f);
}
}
Output:
Number is 10
Number is 9.789
ऊपर के program में, show (int a) तथा show (float a) दो overloaded method हैं, जो respectively int तथा float data type को show करते हैं |
show () method को call करने के दौरान,
जब हमने dm1.show(10) लिखा जिसमें, int data type argument pass किया गया, इसलिए show(int a) method call हुआ |
जब हमने dm1.show(9.789) लिखा जिसमें, float data type argument pass किया गया, इसलिए show(float a) method call हुआ |
Method overloading by changing the sequence of parameters:
इसमें overloaded methods में parameters के sequence (क्रम) different होते हैं |
Example:
show(String emp_Name, int emp_id);
show(int emp_id, String emp_Name);
ऊपर दिए हुए examples में पहले show () method के parameter में पहले String तथा बाद में int data type है जबकि, दूसरे show () method के parameter में पहले int तथा बाद में String data type है |
जब method को call किया जाता है, तब compiler method में pass किए गए arguments के data type के sequence को देखता है और decide करता है कि किस method को call करना चाहिए |
Program 4 :
public class MethodOverloadingDemo3 {
void show(String emp_Name, int emp_id) {
System.out.println("Name is "+emp_Name+" and id is "+emp_id);
}
void show(int emp_id, String emp_Name) {
System.out.println("id is " + emp_id+" and Name is "+emp_Name);
}
public static void main(String[] args) {
MethodOverloadingDemo3 dm1 = new MethodOverloadingDemo3();
dm1.show("Ram",77);
dm1.show(88,"Shyam");
}
}
OutPut:
Name is Ram and id is 77
id is 88 and Name is Shyam
ऊपर के program में, show(String emp_Name, int emp_id) तथा show(int emp_id, String emp_Name) दो overloaded method हैं, जिसमें पास किए हुए parameters के sequence different हैं |
show() methods को call करने के दौरान,
जब हमने dm1.show(“Ram”,77) लिखा जिसमें, पहले String तथा बाद में int data type argument pass किया गया, इसलिए show (String emp_Name, int emp_id) method call हुआ |
जब हमने dm1.show(88,”Shyam लिखा जिसमें, पहले int तथा बाद में String data type argument pass किया गया, इसलिए show(int emp_id, String emp_Name) method call हुआ |
Conclusion – आज आपने क्या सीखा
इस post में polymorphism तथा उसके एक type, compile – time polymorphism के बारे में विस्तार से जाना | आने वाले post में हम इसके दूसरे type, run time polymorphism के बारे में विस्तार से जानेंगे |
आशा है कि, आपको मेरा यह Blog Polymorphism in Java in hindi, जरूर पसंद आया होगा |
अगर आप इस post से related कोई सवाल पूँछना चाहते हैं अथवा कोई सुझाव देना चाहते हैं तो comment करके जरूर बताएं, मैं उसका reply जरूर दूँगा |
इस post को अपना कीमती समय देने के लिए बहुत बहुत धन्यवाद् | फिर मिलेंगें |
Maine check Kiya hai aapne “casting/Conversion” par article nhi likha hai… Casting/Conversion important topic hai Oops mai…. Isase aapke website ka traffic divert ho sakta hai…
Suggestion ke liye dhanyawad Mayur| Jaldi hi es per article likhenge