CodeGym /Java Blog /अनियमित /ऑपरेटर का जावा उदाहरण
John Squirrels
स्तर 41
San Francisco

ऑपरेटर का जावा उदाहरण

अनियमित ग्रुप में प्रकाशित
नमस्ते! आज हम इंस्टेंसऑफ़ ऑपरेटर के बारे में बात करेंगे, उदाहरणों पर विचार करेंगे कि इसका उपयोग कैसे किया जाता है, और यह कैसे काम करता है इसके कुछ पहलुओं पर बात करेंगे :) आप CodeGym के शुरुआती स्तरों पर पहले ही इस ऑपरेटर से मिल चुके हैं। क्या आपको याद है कि हमें इसकी आवश्यकता क्यों है? यदि नहीं, कोई चिंता नहीं। आइए एक साथ याद करें। यह जांचने के लिए इंस्टोफ ऑपरेटर की आवश्यकता है कि क्या एक्स चर द्वारा संदर्भित वस्तु को कुछ वाई वर्ग के आधार पर बनाया गया था । यह सरल लगता है। हम इस विषय पर वापस क्यों आए हैं? सबसे पहले, क्योंकि अब आप जावा के वंशानुक्रम तंत्र और OOP के अन्य सिद्धांतों से अच्छी तरह परिचित हैं। उदाहरण ऑपरेटर अब और अधिक स्पष्ट हो जाएगा और हम इसका उपयोग कैसे किया जाता है इसके अधिक उन्नत उदाहरण देखेंगे। चल दर!इंस्टोफ ऑपरेटर कैसे काम करता है - 1आपको शायद याद होगा कि यदि चेक का मूल्यांकन सही है, या गलत है , तो एक्सप्रेशन गलत है, तो इंस्टोफ़ ऑपरेटर सही रिटर्न देता है । तदनुसार, यह आमतौर पर सभी प्रकार की सशर्त अभिव्यक्तियों में होता है ( if…else )। आइए कुछ सरल उदाहरणों से शुरू करें:

public class Main {

   public static void main(String[] args) {

       Integer x = new Integer(22);

       System.out.println(x instanceof Integer);
   }
}
आपको क्या लगता है कंसोल पर प्रदर्शित किया जाएगा? अच्छा, यहाँ यह स्पष्ट है।:) x वस्तु एक पूर्णांक है, इसलिए परिणाम सत्य होगा । कंसोल आउटपुट: ट्रू आइए जाँचने का प्रयास करें कि क्या यह एक स्ट्रिंग है :

public class Main {

   public static void main(String[] args) {

       Integer x = new Integer(22);

       System.out.println(x instanceof String); // Error!
   }
}
हमें एक त्रुटि मिली। और ध्यान दें: संकलक ने कोड चलाने से पहले त्रुटि उत्पन्न की! इसने तुरंत देखा कि पूर्णांक और स्ट्रिंग को स्वचालित रूप से एक दूसरे में परिवर्तित नहीं किया जा सकता है और ये वंशानुक्रम से संबंधित नहीं हैं। नतीजतन, स्ट्रिंग के आधार पर एक पूर्णांक वस्तु नहीं बनाई जाती है । यह सुविधाजनक है और अजीब रनटाइम त्रुटियों से बचने में मदद करता है, इसलिए संकलक ने हमें यहां मदद की :) अब आइए उन उदाहरणों पर विचार करने का प्रयास करें जो अधिक कठिन हैं। चूंकि हमने वंशानुक्रम का उल्लेख किया है, आइए कक्षाओं की निम्न छोटी प्रणाली के साथ काम करें:

public class Animal {

}

public class Cat extends Animal {

}

public class MaineCoon extends Cat {

}
हम पहले से ही जानते हैं कि जब हम यह जाँचते हैं कि कोई वस्तु किसी वर्ग का एक उदाहरण है, तो उदाहरण कैसे व्यवहार करता है, लेकिन अगर हम माता-पिता के रिश्ते पर विचार करते हैं तो क्या होता है? उदाहरण के लिए, आपको क्या लगता है कि इन भावों से क्या प्राप्त होगा:

public class Main {

   public static void main(String[] args) {

       Cat cat = new Cat();

       System.out.println(cat instanceof Animal);

       System.out.println(cat instanceof MaineCoon);

   }
}
आउटपुट: सही गलत मुख्य प्रश्न जिसका उत्तर देने की आवश्यकता है, वह यह है कि वास्तव में 'एक वर्ग के आधार पर बनाई गई वस्तु' की व्याख्या कैसे की जाती है? ' पशु का बिल्ली उदाहरण ' सत्य का मूल्यांकन करता है , लेकिन निश्चित रूप से हम उस शब्द के साथ गलती पा सकते हैं। एनिमल क्लास के आधार पर कैट ऑब्जेक्ट क्यों बनाया जाता है ? क्या यह अकेले अपनी कक्षा के आधार पर नहीं बनाया गया है? इसका उत्तर काफी सरल है, और हो सकता है कि आपने पहले ही इसके बारे में सोच लिया हो। उस क्रम को याद रखें जिसमें ऑब्जेक्ट बनाते समय कंस्ट्रक्टर्स को कॉल किया जाता है और वेरिएबल्स को इनिशियलाइज़ किया जाता है। हमने इस विषय को पहले ही क्लास कंस्ट्रक्टर्स के बारे में लेख में शामिल कर लिया है । यहाँ उस पाठ से एक उदाहरण दिया गया है:

public class Animal {

   String brain = "Initial value of brain in the Animal class";
   String heart = "Initial value of heart in the Animal class";

   public static int animalCount = 7700000;

   public Animal(String brain, String heart) {
       System.out.println("Animal base class constructor is running");
       System.out.println("Have the variables of the Animal class already been initialized?");
       System.out.println("Current value of static variable animalCount = " + animalCount);
       System.out.println("Current value of brain in the Animal class = " + this.brain);
       System.out.println("Current value of heart in the Animal class = " + this.heart);
       System.out.println("Have the variables of the Cat class already been initialized?");
       System.out.println("Current value of static variable catCount = " + Cat.catCount);

       this.brain = brain;
       this.heart = heart;
       System.out.println("Animal base class constructor is done!");
       System.out.println("Current value of brain = " + this.brain);
       System.out.println("Current value of heart = " + this.heart);
   }
}

public class Cat extends Animal {

   String tail = "Initial value of tail in the Cat class";

   static int catCount = 37;

   public Cat(String brain, String heart, String tail) {
       super(brain, heart);
       System.out.println("The Cat class constructor has started (The Animal constructor already finished)");
       System.out.println("Current value of static variable catCount = " + catCount);
       System.out.println("Current value of tail = " + this.tail);
       this.tail = tail;
       System.out.println("Current value of tail = " + this.tail);
   }

   public static void main(String[] args) {
       Cat cat = new Cat("Brain", "Heart", "Tail");
   }
}
और यदि आप इसे IDE में चलाते हैं, तो कंसोल आउटपुट इस तरह दिखेगा: एनिमल बेस क्लास कंस्ट्रक्टर चल रहा है क्या एनिमल क्लास के वेरिएबल्स को पहले ही इनिशियलाइज़ किया जा चुका है? पशु वर्ग में स्थिर चर का वर्तमान मूल्य गणना = 7700000 पशु वर्ग में मस्तिष्क का वर्तमान मूल्य = पशु वर्ग में मस्तिष्क का प्रारंभिक मूल्य पशु वर्ग में हृदय का वर्तमान मूल्य = पशु वर्ग में हृदय का प्रारंभिक मूल्य पहले से ही बिल्ली वर्ग के चर हैं प्रारंभ किया गया? स्थिर चर का वर्तमान मूल्य catCount = 37 एनिमल बेस क्लास कंस्ट्रक्टर हो गया है! मस्तिष्क का वर्तमान मूल्य = मस्तिष्क वर्तमान मूल्य दिल = दिल बिल्ली वर्ग निर्माता शुरू हो गया है (पशु निर्माता पहले से ही समाप्त हो गया है) स्थिर चर का वर्तमान मूल्य कैटकाउंट = 37 पूंछ का वर्तमान मूल्य = बिल्ली वर्ग में पूंछ का प्रारंभिक मूल्य = पूंछ का वर्तमान मूल्य = पूँछ अब क्या आपको याद है? :) बेस क्लास का कंस्ट्रक्टर, अगर कोई बेस क्लास है, तो ऑब्जेक्ट बनाते समय हमेशा पहले कहा जाता है। उदाहरण के ऑपरेटर को इस सिद्धांत द्वारा निर्देशित किया जाता है जब यह निर्धारित करने का प्रयास किया जाता है कि क्या बी क्लास के आधार पर ए ऑब्जेक्ट बनाया गया था। यदि बेस क्लास कंस्ट्रक्टर को कहा जाए, तो इसमें कोई संदेह नहीं हो सकता। दूसरे चेक के साथ सब कुछ आसान है:

System.out.println(cat instanceof MaineCoon);
कैट ऑब्जेक्ट बनाते समय मेनकून कंस्ट्रक्टर को नहीं बुलाया गया था, जो समझ में आता है । आखिरकार, मेनकून बिल्ली का वंशज है , पूर्वज नहीं। और यह कैट के लिए टेम्पलेट नहीं है । ठीक है, मुझे लगता है कि हम उस पर स्पष्ट हैं। लेकिन अगर हम ऐसा करते हैं तो क्या होता है ?:

public class Main {

   public static void main(String[] args) {

       Cat cat = new MaineCoon();

       System.out.println(cat instanceof Cat);
       System.out.println(cat instanceof MaineCoon);


   }
}
हम्म... अब यह कठिन है। चलिए इस पर बात करते हैं। हमारे पास एक कैट वेरिएबल है जिसे हमने मेनकून ऑब्जेक्ट असाइन किया है। वैसे, वह काम भी क्यों करता है? हम ऐसा कर सकते हैं, है ना? हाँ हम कर सकते हैं। आखिरकार, हर मेनकून एक बिल्ली है। यदि यह पूरी तरह से स्पष्ट नहीं है, तो आदिम प्रकारों को चौड़ा करने का उदाहरण याद रखें:

public class Main {

   public static void main(String[] args) {

       long x = 1024;

   }
}
संख्या 1024 एक छोटा है : यह आसानी से एक लंबे चर में फिट बैठता है, क्योंकि इसे समायोजित करने के लिए पर्याप्त बाइट हैं (गुड़िया के साथ उदाहरण याद रखें?)। एक वंशज वस्तु को हमेशा पूर्वज चर को सौंपा जा सकता है। अभी के लिए, बस इसे याद रखें, और बाद के पाठों में हम इसका विश्लेषण करेंगे कि यह कैसे काम करता है। तो हमारा उदाहरण आउटपुट क्या करता है?

Cat cat = new MaineCoon();
System.out.println(cat instanceof Cat);
System.out.println(cat instanceof MaineCoon);
इंस्टोफ चेक क्या करेगा ? हमारा कैट वेरिएबल या हमारा मेनकून ऑब्जेक्ट? इसका उत्तर यह है कि यह प्रश्न वास्तव में सरल है। आपको केवल ऑपरेटर की परिभाषा को फिर से पढ़ने की आवश्यकता है: यह जांचने के लिए ऑपरेटर की आवश्यकता है कि क्या किसी X चर द्वारा संदर्भित वस्तु को कुछ Y वर्ग के आधार पर बनाया गया था । उदाहरण ऑपरेटर किसी वस्तु की उत्पत्ति का परीक्षण करता है, न कि चर प्रकार का इस प्रकार, इस उदाहरण में, हमारा प्रोग्राम दोनों ही मामलों में सही प्रदर्शित करेगा : हमारे पास मेनकून ऑब्जेक्ट है। जाहिर है, यह MaineCoon क्लास के आधार पर बनाया गया था , लेकिन इसे कैट के आधार पर बनाया गया थाअभिभावक वर्ग भी!
टिप्पणियां
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION