जावा में बहुरूपता: विधियों को अधिभार या ओवरराइड कैसे करें

जावा में बहुरूपता: विधियों को अधिभार या ओवरराइड कैसे करें

विधि ओवरलोडिंग और ओवरराइडिंग दो तरीके हैं जिनसे जावा बहुरूपता प्रदर्शित करता है। बहुरूपता दो ग्रीक शब्दों के संयोजन से आता है: 'पॉली' का अर्थ है कई और 'मॉर्फ' का अर्थ है रूप। इसलिए, बहुरूपता कई रूपों को लेने के तरीकों को सक्षम बनाता है।





जावा में विधियों को अधिभार या ओवरराइड करने का तरीका जानने के लिए इस गाइड का पालन करें।





मेथड ओवरलोडिंग क्या है?

'मेथड ओवरलोडिंग' एक ही नाम वाले वर्ग में विभिन्न विधियों को परिभाषित करने के लिए संदर्भित करता है। विधियों में अलग-अलग हस्ताक्षर होने चाहिए। एक विधि हस्ताक्षर एक विधि के नाम और पैरामीटर सूची का संयोजन है। इसमें रिटर्न प्रकार शामिल नहीं है।





कंपाइलर जानता है कि किस विधि का उपयोग करना है, प्रकार, मापदंडों की संख्या और क्रम जिसमें उन्हें रखा गया है।

सम्बंधित: जावा प्रोग्रामिंग भाषा में वंशानुक्रम की खोज



विधि ओवरलोडिंग संकलन-समय बहुरूपता प्रदर्शित करता है। कंपाइल-टाइम पॉलीमॉर्फिज्म का मतलब है कि जावा कंपाइलर किसी ऑब्जेक्ट को रनटाइम पर उसकी कार्यक्षमता से बांधता है। संकलक इसे प्राप्त करने के लिए विधि हस्ताक्षर की जाँच करता है।

इस प्रकार के बहुरूपता को स्थैतिक या प्रारंभिक बंधन के रूप में भी जाना जाता है।





नीचे दी गई विधि ओवरलोडिंग उदाहरण देखें:

class Arithmetic{
int cube(int x){
return x*x*x;
}
double cube(double x){
return x*x*x;
}
float cube(float x){
return x*x*x;
}
public static void main(String[] args){
Arithmetic myMultiplication = new Arithmetic();
System.out.println('The cube of 5 is ' + myMultiplication.cube(5));
System.out.println('The cube of 5.0 is ' + myMultiplication.cube(5.0));
System.out.println('The cube of 0.5 is ' + myMultiplication.cube(0.5));
}
}

आउटपुट:





The cube of 5 is 125
The cube of 5.0 is 125.0
The cube of 0.5 is 0.125

ऊपर दिया गया कोड दिखाता है कि आप विभिन्न प्रकार का घन कैसे प्राप्त कर सकते हैं ( NS , दोहरा , पानी पर तैरना ) उसी विधि का उपयोग करना।

आम तौर पर, विभिन्न पैरामीटर प्रकारों के साथ समान विधियों को परिभाषित करने के लिए विधि ओवरलोडिंग का उपयोग किया जाता है।

मेथड ओवरराइडिंग क्या है?

यह एक उपवर्ग में एक विधि के एक अलग कार्यान्वयन को संदर्भित करता है। विधि पहले से ही मूल वर्ग में परिभाषित की जानी चाहिए।

ओवरराइडिंग विधि (अर्थात उपवर्ग में से एक) में सुपरक्लास के समान विधि हस्ताक्षर होना चाहिए। ओवरराइडिंग विधि का रिटर्न प्रकार सुपरक्लास में समान या उपप्रकार हो सकता है।

ओवरराइडिंग का उपयोग आमतौर पर उपवर्ग में किसी वस्तु के व्यवहार के विशिष्ट कार्यान्वयन को शामिल करने के लिए किया जाता है।

class Account{
public void message() {
System.out.println('
Thank you for opening an account with us!');
}
public static void main(String args[]) {
Account myAccount = new Account();
Savings mySavings = new Savings();
FixedDeposit myFixedDepo = new FixedDeposit();
myAccount.message();
mySavings.message();
myFixedDepo.message();
}
}
class Savings extends Account {
public void message() {
System.out.println('
Thank you for opening a Savings account with us!');
}
}
class FixedDeposit extends Account {
public void message() {
System.out.println('
Thank you for opening a Fixed Deposit account with us!');
}
}

आउटपुट:

Thank you for opening an account with us!
Thank you for opening a Savings account with us!
Thank you for opening a Fixed Deposit account with us!

उपरोक्त उदाहरण दिखाता है कि कैसे विधि संदेश() उपवर्गों में ओवरराइड किया गया है जमा पूंजी तथा सावधि जमा . बचत खाते वाले और सावधि जमा खाते वाले बैंक खाताधारकों के लिए अलग-अलग संदेश प्रदर्शित किए जाएंगे।

सम्बंधित: जावा में स्ट्रिंग्स का उपयोग करने के बारे में आपको क्या जानना चाहिए

यह भी ध्यान देने योग्य है कि विधि ओवरराइडिंग रनटाइम बहुरूपता या गतिशील विधि प्रेषण को प्रदर्शित करता है। इसका मतलब यह है कि कॉल की जाने वाली विधि को संकलन के बजाय रनटाइम पर हल किया जाता है।

किसी विधि को ओवरराइड होने से बचाने के लिए, कीवर्ड का उपयोग करें अंतिम .

final void message (){
System.out.println('
Thank you for opening an account with us!');
}

जब कोई उपवर्ग इसे ओवरराइड करने का प्रयास करता है, तो एक संकलन त्रुटि उत्पन्न होगी।

आदर्श रूप से, एक कंस्ट्रक्टर के भीतर बुलाए गए सभी तरीके होने चाहिए अंतिम . यह उपवर्गों के कारण होने वाले किसी भी अनपेक्षित परिवर्तन से बचने के लिए है।

कभी-कभी, आपको ओवरराइडिंग विधि के भीतर एक ओवरराइड विधि तक पहुंचने की आवश्यकता हो सकती है। आप कीवर्ड का उपयोग कर सकते हैं उत्तम इसके बाद डॉट ऑपरेटर ( . ) और ऐसे मामले में विधि का नाम।

सुपरक्लास पर विचार करें जानवर .

class Animal{
public void move() {
System.out.println('
I can move.');
}
}

नीचे एक उपवर्ग है, जिसे कहा जाता है मछली , जो ओवरराइड करता है कदम() :

class Fish extends Animal {
public void move() {
System.out.println('
I can swim.');
super.move();
}
public static void main(String args[]){
Fish Tilapia = new Fish();
Tilapia.move();
}
}

आउटपुट:

स्टार्टअप पर रास्पबेरी पाई रन स्क्रिप्ट
I can swim.
I can move.

किसी विधि को ओवरराइड करते समय, आपको उपयोग किए गए एक्सेस संशोधक से भी सावधान रहने की आवश्यकता है। उपवर्ग में संशोधक की दृश्यता का स्तर समान होना चाहिए या आधार वर्ग की तुलना में अधिक होना चाहिए। उदाहरण के लिए, यदि बेस क्लास में विधि को परिभाषित किया गया है संरक्षित , तो ओवरराइडिंग विधि या तो हो सकती है संरक्षित या सह लोक .

बहुरूपता के साथ सरल कोड

कोड सरलीकरण के लिए विधि ओवरराइडिंग और ओवरलोडिंग महत्वपूर्ण हैं, और सरल कोड अच्छा अभ्यास है।

क्यों? ग्रैंड सेंट्रल स्टेशन की तुलना में अधिक ins और outs के साथ एक जटिल कोडबेस की कल्पना करें। अब कल्पना कीजिए कि एक विनाशकारी बग आपकी आंखों के सामने आपकी मेहनत को नष्ट करना शुरू कर देता है। आपको संक्रमण के स्रोत को अलग करने की आवश्यकता है, और आपको इसे जल्दी से करने की आवश्यकता है।

सौभाग्य, आपने अपने कोड को सरल नहीं बनाया... अब आप क्रिप्टोग्राफ़ी में एक सच्चा सबक प्राप्त करने वाले हैं। प्रभावी डेटा संरचनाओं को नियोजित करना और कोड को छोटा करने के लिए आप जो कर सकते हैं वह करना (जैसे DRY को ध्यान में रखना) इस तरह की स्थिति के खिलाफ आपका सबसे अच्छा बचाव है।

आपकी जावा सीखने की सूची में अगला सरणियों के साथ काम करना चाहिए। वे महत्वपूर्ण डेटा संरचनाएं हैं जिनका उपयोग डेटा बिंदुओं के बैचों को संग्रहीत करने के लिए किया जाता है।

साझा करना साझा करना कलरव ईमेल Java में Arrays पर ऑपरेशंस कैसे बनाएं और निष्पादित करें

जावा सीखना? सरणियों को आपके डेटा को आसानी से संभालने दें।

आगे पढ़िए
संबंधित विषय
  • प्रोग्रामिंग
  • जावा
  • कोडिंग ट्यूटोरियल
लेखक के बारे में जेरोम डेविडसन(22 लेख प्रकाशित)

जेरोम MakeUseOf में स्टाफ राइटर हैं। वह प्रोग्रामिंग और लिनक्स पर लेख शामिल करता है। वह एक क्रिप्टो उत्साही भी है और हमेशा क्रिप्टो उद्योग पर नजर रखता है।

जेरोम डेविडसन की अन्य फ़िल्में-टीवी शो

हमारे न्यूज़लेटर की सदस्यता लें

तकनीकी युक्तियों, समीक्षाओं, निःशुल्क ई-पुस्तकों और अनन्य सौदों के लिए हमारे न्यूज़लेटर से जुड़ें!

सब्सक्राइब करने के लिए यहां क्लिक करें