oop java introduction object oriented programming java
यह वीडियो ट्यूटोरियल जावा (ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग) अवधारणाओं को जावा में पेश करेगा, जैसे कि ऑब्जेक्ट, क्लास, इनहेरिटेंस, पॉलीमॉर्फिज़्म, एब्सट्रैक्शन, एनकैप्सुलेशन, आदि:
सॉफ्टवेयर प्रोग्रामिंग में, हमारे पास विभिन्न प्रकार की प्रोग्रामिंग भाषाएं हैं। उनमें से प्रमुख भाषाएं या तो प्रक्रियात्मक हैं या प्रकृति में वस्तु-उन्मुख हैं।
प्रक्रियात्मक प्रोग्रामिंग भाषाओं में, बड़ी समस्याएं छोटी हल करने योग्य समस्याओं में टूट जाती हैं। इन छोटी समस्याओं को प्रक्रियाओं या कार्यों में बदल दिया जाता है। इस तरह प्रक्रियात्मक प्रोग्रामिंग भाषा डेटा के बजाय कार्यों पर जोर देती है। इस प्रकार प्रक्रियात्मक भाषाओं ने पूरी तरह से डेटा की उपेक्षा की और इस प्रकार वे डेटा सुरक्षा को बिल्कुल भी सुनिश्चित नहीं करते हैं।
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग लैंग्वेज द्वारा इस समस्या का ध्यान रखा गया। ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग ऑब्जेक्ट्स में हेरफेर करके डिजाइनिंग और प्रोग्रामिंग सॉफ्टवेयर का एक तरीका है और ऑब्जेक्ट प्रोग्रामिंग का मुख्य हिस्सा हैं।
शुरुआती के लिए जावा ट्यूटोरियल की हमारी पूरी श्रृंखला की खोज करें यहां ।
आप क्या सीखेंगे:
OOPS अवधारणाओं पर वीडियो ट्यूटोरियल
जावा में OOPS अवधारणा - भाग 1:
जावा में OOPS कॉन्सेप्ट पर गहराई से देखें - भाग 2:
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग लैंग्वेज फ़ंक्शंस से अधिक डेटा पर ज़ोर देती हैं। ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) वस्तुओं के चारों ओर घूमती है यानी एक वास्तविक समय इकाई।
यह ऑब्जेक्ट डेटा और विधियों को एक इकाई में इस डेटा पर संचालित करता है। इस तरह, ऑब्जेक्ट के अंदर तरीके होने से डेटा बाहरी दुनिया से सुरक्षित है। ओओपी में, वस्तु संदेश के माध्यम से एक दूसरे के साथ संवाद करते हैं।
कोई भी OOP भाषा निम्नलिखित सुविधाओं का समर्थन करती है:
- कक्षाओं
- कैप्सूलीकरण
- मतिहीनता
- विरासत
- बहुरूपता
इन सभी विशेषताओं से यह सुनिश्चित होता है कि डेटा सुरक्षित है और साथ ही हम मजबूत एप्लिकेशन भी लिख सकते हैं। स्मॉलटाक, सी ++, जावा, आदि कुछ ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग लैंग्वेज हैं।
इस ट्यूटोरियल में, हम जावा भाषा के विषय में OOP की मूल बातें पर चर्चा करेंगे।
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) जावा में
वर्तमान में प्रोग्रामिंग कौशल के बाद जावा की सबसे अधिक मांग है। जावा में, सब कुछ ऑब्जेक्ट पर आधारित है। जावा में एक रूट क्लास है जिसे ऑब्जेक्ट कहा जाता है जिससे जावा की संपूर्ण कार्यक्षमता व्युत्पन्न होती है। इस प्रकार इस ट्यूटोरियल में, हम जावा के बारे में OOP की मुख्य विशेषताओं पर चर्चा करेंगे।
अनुशंसित पढ़ना => OOP साक्षात्कार प्रश्न और उत्तर
यहां हम चर्चा करने जा रहे हैं कि जावा निम्नलिखित ओओपी सुविधाओं का समर्थन कैसे करता है।
- वस्तु और वर्ग
- कक्षा
- विरासत
- बहुरूपता
- मतिहीनता
- कैप्सूलीकरण
आइए इनमें से प्रत्येक जावा ओओपी अवधारणाओं पर विस्तार से चर्चा करें।
वस्तु और वर्ग
एक वर्ग को एक डिज़ाइन प्रोटोटाइप या ब्लूप्रिंट के रूप में परिभाषित किया जा सकता है। इन ब्लूप्रिंट से ऑब्जेक्ट बनाए जाते हैं। यह अनिवार्य रूप से गुणों और विधियों से मिलकर एक सामान्य प्रकार को परिभाषित करता है जो इस सामान्य प्रकार के लिए इन गुणों पर काम करता है। फिर हम वस्तुओं नामक इस वर्ग के उदाहरणों को परिभाषित करते हैं।
निम्न आकृति में दिखाए गए अनुसार एक वर्ग के कई घटक होते हैं।
एक वस्तु एक वास्तविक जीवन इकाई का प्रतिनिधित्व करती है। जावा में, एक ऑब्जेक्ट एक वर्ग का एक उदाहरण है। तो एक वर्ग जो एक खाका है उसका उपयोग कई वस्तुओं को बनाने के लिए किया जा सकता है। ये ऑब्जेक्ट अक्सर एक-दूसरे के साथ तरीकों से एक-दूसरे को संदेश भेजकर संवाद करते हैं।
वीडियो ट्यूटोरियल: कक्षाएं और वस्तुएँ
एक वस्तु आम तौर पर है:
- एक राज्य: किसी विशेष समय में किसी वस्तु का गुण या गुण।
- व्यवहार: विधियाँ किसी वस्तु के व्यवहार का प्रतिनिधित्व करती हैं। विधियाँ यह भी परिभाषित करती हैं कि वस्तुएं कैसे संवाद करती हैं।
- पहचान: किसी विशिष्ट नाम को देकर वस्तु की पहचान करता है।
उदाहरण के लिए, अगर हमारे पास पेटीएम क्लास है।
तब हम इस वर्ग की एक वस्तु को इस प्रकार परिभाषित कर सकते हैं:
पेटअनीमल्स पिग = नए पेटीनामल्स।
यहाँ वस्तु की पहचान एक सुअर है।
नीचे दिए गए एक कार्यक्रम है जो वर्ग और वस्तु को प्रदर्शित करता है।
//student class class Student{ int roll_No; String student_name; } class Main{ public static void main(String args()){ //Create objects of class Student Student student1=new Student(); Student student2=new Student(); //Initialize Student class objects student1.roll_No=101; student1.student_name='Lisa'; student2.roll_No=102; student2.student_name='Dan'; //Print object data System.out.println('Student 1 Details: ' + student1.roll_No+' '+student1.student_name); System.out.println('Student 2 Details: ' + student2.roll_No+' '+student2.student_name); } }
उत्पादन
उपरोक्त कक्षा में, हमने एक वर्ग के छात्र को दो गुणों के साथ परिभाषित किया है रोलऑनओ और student_name। फिर मुख्य विधि में, हम दो कक्षा की वस्तुओं को घोषित करते हैं अर्थात् छात्र 1 और छात्र 2। ध्यान दें कि ये ऑब्जेक्ट एक नए ऑपरेटर का उपयोग करके बनाए गए हैं। एक बार ऑब्जेक्ट बनने के बाद हम दोनों ऑब्जेक्ट प्रॉपर्टी को डेटा असाइन करते हैं।
अंत में, हम using। ’(डॉट) ऑपरेटर का उपयोग करके ऑब्जेक्ट कंटेंट प्रिंट करते हैं।
हम अपने विशिष्ट ओओपी ट्यूटोरियल विषयों में कक्षाओं और वस्तुओं के बारे में अधिक जानेंगे।
विरासत
विरासत OOP की सबसे महत्वपूर्ण विशेषताओं में से एक है। विरासत के माध्यम से, जावा कोड की पुन: प्रयोज्यता को बढ़ावा देता है।
तो जावा में एक विरासत क्या है?
वंशानुक्रम जावा में एक तंत्र है जिसमें एक वर्ग दूसरे वर्ग के गुणों को प्राप्त कर सकता है। विरासत में मिलने वाले गुणों में डेटा सदस्य और कक्षा के तरीके शामिल हैं।
जिस वर्ग को दूसरे वर्ग के गुण विरासत में मिलते हैं, उसे उपवर्ग कहा जाता है। विरासत में मिली कक्षा को जावा में 'सुपर' वर्ग के रूप में जाना जाता है।
वर्ग को इनहेरिट करके, उपवर्ग न केवल गुणों को विरासत में देता है, बल्कि कोड को भी पुन: उपयोग करता है क्योंकि प्रोग्रामर को एक बार फिर से कोड लिखने की आवश्यकता नहीं होती है जब यह सीधे विरासत का उपयोग करके इसे प्राप्त कर सकता है।
Java में, 'extends' कीवर्ड का उपयोग करके वंशानुक्रम प्राप्त किया जाता है। यह विस्तारक शब्द कक्षा की परिभाषा में प्रयोग किया जाता है और इसके बाद वर्ग का नाम होता है जिसे विरासत में प्राप्त करना होता है।
उदाहरण के लिए,यदि दो वर्ग ए और बी हैं, और ए को बी द्वारा विरासत में लिया जाना है तो यह विरासत जावा में लिखी गई है:
class B extends A { …… }
जैसा कि पहले ही उल्लेख किया गया है, यहां ए सुपरक्लास या बेस क्लास या पैरेंट क्लास है। B एक उपवर्ग, व्युत्पन्न वर्ग या बाल वर्ग है।
इनहेरिटेंस को निम्नलिखित प्रकारों में विभाजित किया गया है।
जावा एकल, बहु-स्तरीय और श्रेणीबद्ध विरासत का समर्थन करता है।
ध्यान दें कि जावा कई विरासतों का समर्थन नहीं करता है। जावा हाइब्रिड इनहेरिटेंस का भी समर्थन नहीं करता है जो कई और पदानुक्रमित विरासतों का एक संयोजन है।
नीचे दिए गए जावा में एकल वंशानुक्रम का एक उदाहरण कार्यक्रम है।
//base class class Employee{ float salary=50000; } //derived class class Developer extends Employee{ int bonus=20000; } class Main{ public static void main(String args()){ //declare Developer class object and access properties of base and derived class Developer p=new Developer(); System.out.println('Inheritance in Java'); System.out.println('Developer salary: '+p.salary); System.out.println('Bonus declared for Developer: '+p.bonus); System.out.println('Developer Total Earnings: ' + (p.salary + p.bonus)); } }
उत्पादन
उपरोक्त कार्यक्रम में, हमारे पास एक आधार वर्ग कर्मचारी है। हमारे पास एक और वर्ग डेवलपर है जो कर्मचारी वर्ग से विरासत में मिला है। मुख्य विधि में, हम देख सकते हैं कि डेवलपर वर्ग की एक वस्तु की घोषणा करके हम न केवल डेवलपर वर्ग के गुणों का उपयोग कर सकते हैं, बल्कि कर्मचारी वर्ग का भी उपयोग कर सकते हैं क्योंकि यह डेवलपर वर्ग द्वारा विरासत में मिला है।
बहुरूपता
बहुरूपता अभी तक OOP की एक और महत्वपूर्ण विशेषता है। बहुरूपता भाषा की क्षमता है जो वस्तुओं या संस्थाओं को कई रूपों को ग्रहण करने की अनुमति देती है। उदाहरण के लिए, एक विधि जिसमें विभिन्न कार्यान्वयन हैं जावा में बहुरूपता है।
बहुरूपता जावा में दो प्रकार का होता है:
- ओवरलोडिंग या संकलन समय बहुरूपता: संकलन-समय के बहुरूपता में, संकलन समय पर बहुरूपता या अतिभारित पद्धति के लिए कॉल का समाधान किया जाता है।
- ओवरराइडिंग या रनटाइम पॉलीमॉर्फिज्म: रनटाइम बहुरूपता में, जावा प्रोग्राम में एक ओवरराइड विधि के लिए कॉल रनटाइम पर हल किया जाता है।
हम अपने बाद के ट्यूटोरियल में विस्तार से बहुरूपता पर चर्चा करेंगे।
नीचे दिए गए जावा में संकलन-समय के बहुरूपता का एक उदाहरण है, जिसमें हमारे पास अलग-अलग ऑपरेंड प्रकारों के साथ प्रदर्शन करने के लिए ओवरलोडेड है जो विधि है।
class Numbers_Sum { //add method : takes two int parameters public int add(int val1, int val2) { return (val1 + val2); } // overloaded add : takes three int parameters public int add(int val1, int val2, int val3) { return (val1 + val2 + val3); } //overloaded add: takes two double parameters public double add(double val1, double val2) { return (val1 + val2); } } class Main{ public static void main(String args()) { //create an object of Numbers_Sum class and call overloaded functions Numbers_Sum numsum = new Numbers_Sum(); System.out.println('Polymorphism in Java'); System.out.println('add(int, int): ' + numsum.add(15, 18)); System.out.println('add(int, int, int): ' + numsum.add(5, 10, 20)); System.out.println('add(double,double): ' + numsum.add(5.5, 15.5)); } }
उत्पादन
इस कार्यक्रम में, हमारे पास ऐड नाम की तीन अतिभारित विधियाँ हैं। पहली विधि दो अंतर पैरामीटर लेती है, अगली विधि तीन अंतर पैरामीटर लेती है और तीसरी विधि दो दोहरे पैरामीटर लेती है। मापदंडों की संख्या के आधार पर, विधि कॉल को संकलन-समय पर हल किया जाता है और उपयुक्त कॉल किया जाता है।
मतिहीनता
डेटा अमूर्तता का उपयोग करते हुए, हम केवल उस एप्लिकेशन के आवश्यक भागों को उजागर करते हैं जो उपयोगकर्ता के लिए सुलभ हैं। उदाहरण के लिए, यदि हमारे पास कार है, तो हम कार के आंतरिक घटकों के बारे में चिंतित नहीं हैं, बल्कि हम केवल कार को एक संपूर्ण मानते हैं।
डेटा अमूर्त तंत्र का उपयोग करते हुए, हम केवल आवश्यक विवरणों की पहचान करते हैं और अप्रासंगिक विवरणों को अनदेखा करते हैं। अमूर्तता प्राप्त करने के लिए जावा अमूर्त वर्गों और इंटरफेस का उपयोग करता है। इंटरफेस 100% अमूर्त हैं क्योंकि उनके पास केवल पद्धति प्रोटोटाइप हैं और उनकी परिभाषा नहीं है।
नीचे दिए गए उदाहरण में एक अमूर्त वर्ग और उसके उपयोग को दिखाया गया है।
// Abstract class declaration abstract class PetAnimal { // Abstract method: should be defined in derived class public abstract void animalSound(); // non-abstract method public void print() { System.out.println('This method is example of abstraction'); } } // Derived class class Dog extends PetAnimal { //abstract method defined here public void animalSound() { System.out.println('The doggy barks'); } } class Main { public static void main(String() args) { Dog doggy = new Dog(); // Instantiate derived class and call methods doggy.animalSound(); doggy.print(); } }
उत्पादन
उपर्युक्त कार्यक्रम में, हमारे पास एक अमूर्त वर्ग पेटीमनील है। इसमें, हमारे पास एक अमूर्त विधि है 'एनिमलसाउंड'। फिर हम एक डॉग क्लास बनाते हैं और पेटेनिमल्स क्लास को इनहेरिट करते हैं। डॉग क्लास में, हम एनिमलसाउंड विधि को ओवरराइड करते हैं।
oracle sql साक्षात्कार प्रश्न और 3 साल के अनुभव के लिए उत्तर
कैप्सूलीकरण
एनकैप्सुलेशन डेटा को छिपा रहा है या डेटा की सुरक्षा कर रहा है। प्रोग्रामिंग में, हम डेटा और विधियों को एक इकाई के तहत उस डेटा पर संचालित करने के लिए इनकैप्सुलेशन प्राप्त करते हैं।
वीडियो ट्यूटोरियल: जावा में एनकैप्सुलेशन और पॉलीमोर्फिज्म
एक वर्ग को एक एनकैप्सुलेशन यूनिट के रूप में देखा जा सकता है यानी हमारे पास इन डेटा सदस्यों पर एक एकल इकाई में बंडल किए गए डेटा सदस्य और तरीके हैं।
डेटा सदस्यों को निजी बनाकर और इन डेटा पर काम करने के तरीकों को सार्वजनिक करके उचित एनकैप्सुलेशन प्राप्त किया जा सकता है ताकि डेटा बाहरी संस्थाओं से पूरी तरह से सुरक्षित रहे।
नीचे जावा प्रोग्राम एनकैप्सुलेशन अवधारणा को प्रदर्शित करता है।
class Customer_Account { //private data of class private long customer_accountNo; private String customer_name,customer_email; private float customer_salary; //public getter/setter methods to access private data public long getAcc_no() { return customer_accountNo; } public void setAcc_no(long acc_no) { this.customer_accountNo = acc_no; } public String getName() { return customer_name; } public void setName(String name) { this.customer_name = name; } public String getEmail() { return customer_email; } public void setEmail(String email) { this.customer_email = email; } public float getSalary() { return customer_salary; } public void setSalary(float salary) { this.customer_salary = salary; } } public class Main { public static void main(String() args) { //create an object of customer_Account class Customer_Account acc=new Customer_Account(); //use setter methods to set values acc.setAcc_no(123458765432L); acc.setName('SoftwareTestingHelp'); acc.setEmail('sth@sth.com'); acc.setSalary(65000f); //use getter methods to read values System.out.println('Customer Account Number: ' + acc.getAcc_no()); System.out.println('Customer Account Details:'); System.out.println(' Customer Name: '+acc.getName()+'
'+ ' Customer Email: ' + acc.getEmail()+'
' + ' Customer Salary: ' +acc.getSalary()); } }
उत्पादन
उपरोक्त कार्यक्रम में, हमारे पास एक ग्राहक Customer_Account है।
इस वर्ग में, हमारे पास डेटा सदस्य हैं जो सभी निजी हैं। फिर प्रत्येक निजी क्षेत्र के लिए, हम क्रमशः पढ़ने और सेट करने के लिए गेट्टर और सेटर विधियां प्रदान करते हैं। ये गेटर्स और सेटर सार्वजनिक हैं। इस तरह हम डेटा फ़ील्ड को सीधे कक्षा के बाहर से किसी भी एक्सेस की अनुमति नहीं देते हैं।
उन्हें केवल गेटर्स और सेटर के माध्यम से एक्सेस किया जा सकता है। यह हमारे द्वारा वर्णित एनकैप्सुलेशन को प्रदर्शित करता है।
बार बार पूछे जाने वाले प्रश्न
Q # 1) ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग का क्या मतलब है?
उत्तर: ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) एक सॉफ्टवेयर प्रतिमान है जो डेटा के चारों ओर घूमता है। OOP में, डेटा पर जोर दिया जाता है और इस प्रकार उन वस्तुओं के संदर्भ में समस्याएँ व्यक्त की जाती हैं जो डेटा या फ़ील्ड्स और इन डेटा फ़ील्ड्स पर कार्य करने वाली विधियों से युक्त होती हैं।
ऐसा करने से, OOP की कई विशिष्ट विशेषताएं जैसे वंशानुक्रम, बहुरूपता, अमूर्तता और एनकैप्सुलेशन डेटा सुरक्षा, पुन: प्रयोज्य, आदि सुनिश्चित करने के लिए लागू होते हैं।
Q # 2) OOP के 4 मूल सिद्धांत क्या हैं?
उत्तर:ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) के चार मूल सिद्धांत हैं:
- विरासत
- बहुरूपता
- मतिहीनता
- कैप्सूलीकरण
उन्हें OOP के चार स्तंभ भी कहा जाता है।
Q # 3) जावा को ऑब्जेक्ट ओरिएंटेड क्यों कहा जाता है?
उत्तर: जावा में एक रूट क्लास ऑब्जेक्ट है जिसमें से हम जावा की अन्य सभी विशेषताओं को प्राप्त करते हैं। इस प्रकार वर्ग और वस्तु के बिना, हमारे पास जावा प्रोग्राम नहीं हो सकता है। इसलिए जावा को ओओपी भाषा कहा जाता है।
Q # 4) जावा शुद्ध रूप से ऑब्जेक्ट-ओरिएंटेड है?
उत्तर: नहीं, जावा शुद्ध वस्तु-उन्मुख भाषा नहीं है। जैसा कि जावा भी आदिम डेटा प्रकार जैसे इंट, चार, फ्लोट, डबल, लॉन्ग आदि प्रदान करता है, इसे शुद्ध ओओपी भाषा के रूप में वर्गीकृत नहीं किया गया है।
Q # 5) C ++ और Java में क्या अंतर है?
उत्तर: C ++ और Java दोनों ऑब्जेक्ट-ओरिएंटेड लैंग्वेज हैं और OOP फीचर्स को सपोर्ट करते हैं। लेकिन C ++ एक संकलित भाषा है। दूसरी ओर जावा को संकलित भाषा के साथ-साथ संकलित किया गया है।
जावा दुभाषिया रनटाइम पर बाइट कोड निष्पादित करता है और आउटपुट उत्पन्न करता है जो इसे प्लेटफ़ॉर्म-स्वतंत्र बनाता है। C ++ हालांकि प्लेटफॉर्म पर निर्भर है।
OOPS अवधारणा पर अधिक
कक्षा
वर्ग एक वास्तविक दुनिया की वस्तु का एक खाका / प्रोटोटाइप है और यह उस वास्तविक दुनिया वस्तु के राज्य और व्यवहार को दर्शाता है।
वर्ग घोषणा
class MyClass { // field, constructor, and // method declarations }
Class room(){ //room should have dimension. Dimension is attribute. //in the room, we are going keep things. Keeping is the function we are going to do. Keepthings (); this is a method in java. }
वस्तु
सॉफ्टवेयर ऑब्जेक्ट राज्य और व्यवहार के साथ वास्तविक जीवन की वस्तुओं की तरह हैं। राज्य को एक क्षेत्र के रूप में संग्रहीत किया जाएगा और तरीकों के रूप में उसके व्यवहार को उजागर किया जाएगा।
यहां कमरा सामान्य डिजाइन की तरह है। इस कमरे के भीतर, आपको लिविंग रूम, कुकिंग रूम, बेडरूम डिजाइन करना चाहिए।
Class CookingRoom(){ Dimension is attribute. //here we should have method to keep cooking things. Keepthings(){ This method is same like room class keep things method. but it should have some more features to hold cooking items. } cooking(); }
Class LivingRoom(){ Dimension is attribute. //here we should have method to keep Living Room things. Keepthings(){ This method is same like room class keep things method. but it should have some more features to hold living room items(like tv etc). } watching tv(); }
यहाँ 'Keepthings ()' विधि को कमरे के लिए आवश्यक बुनियादी फ़ंक्शंस करना चाहिए और इसमें 'लिविंग रूम' क्लास और 'कुकिंग रूम' क्लास की आवश्यकता के अनुसार अतिरिक्त विनिर्देश होना चाहिए। तो दो वर्गों को 'कमरे' वर्ग में विधियों को विरासत में लेना चाहिए।
विरासत
व्यवहार (तरीके) और दूसरे वर्ग को विरासत में मिली एक श्रेणी की स्थिति को विरासत कहा जाता है। विधियों और राज्य को मूल वर्ग से बाल वर्ग में विरासत में मिला है।
इसलिए,
Class CookingRoom extends Room{ }
Class LivingRoom extends Room{ }
बहुरूपता
जीव विज्ञान में, बहुरूपता उन मसालों को संदर्भित करता है जिनके कई अलग-अलग रूप हो सकते हैं।
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में समान अवधारणा के साथ, चाइल्ड क्लास अपने पैरेंट क्लास मेथड को इनहेरिट कर सकती है, साथ ही यह उस व्यवहार में अद्वितीय विशेषताओं को जोड़ सकती है। बहुरूपता या ओवरराइडिंग विधि द्वारा बहुरूपता प्राप्त की जा सकती है।
अधिक भार
public class OverloadDemo { public int add( int a,int b) { int rs=a+b; return rs; } public int add( int a,int b,int c) { int rs=a+b+c; return rs; } public static void main(String() args) { OverloadDemo ov=new OverloadDemo(); System.out.println(ov.add(23,56,45)); System.out.println(ov.add(23,56)); } }
अधिभावी
public class Bicycle { int wheels=2; String seat; public void riding() { System.out.println('bicycle is used for riding'); } }
public class RoadBicycle extends Bicycle{ public void riding() { System.out.println('RoadBicycle is used for road riding'); } }
public class TestBicycle { public static void main(String() args) { Bicycle b=new RoadBicycle(); b.riding(); } }
OUTPUT: यहां चाइल्ड क्लास मेथड पैरेंट क्लास मेथड को ओवरराइड करता है।
सुपर कीवर्ड
सुपर कीवर्ड एक संदर्भ चर है जिसका उपयोग तत्काल मूल वर्ग ऑब्जेक्ट को संदर्भित करने के लिए किया जाता है। सुपर कीवर्ड के साथ, आप मूल वर्ग विधि या चर या कंस्ट्रक्टर का उल्लेख कर सकते हैं।
यह कीवर्ड
इस कीवर्ड का उपयोग वर्तमान क्लास ऑब्जेक्ट को संदर्भित करने के लिए किया जाता है। इस कीवर्ड का उपयोग करके, आप वर्तमान वर्ग के उदाहरण चर या वर्तमान वर्ग विधि का उपयोग कर सकते हैं। इसे मेथड कॉल में एक तर्क के रूप में पारित किया जा सकता है।
public class DemoThisKeyword { private int accno; private int balance; public void setvalues(int accno,int balance) { this.accno=accno; this.balance=balance; } public int showdata() { System.out.println(accno); System.out.println(balance); return balance; } public static void main(String() args) { // TODO Auto-generated method stub DemoThisKeyword obj =new DemoThisKeyword(); obj.setvalues(11, 100); obj.showdata(); System.out.println(obj.showdata()); } }
निर्माता
जावा निर्माता ऐसे तरीकों की तरह हैं जिन्हें कक्षा के लिए ऑब्जेक्ट बनाए जाने पर कहा जाएगा। निर्माणकर्ता का वर्ग के समान नाम होना चाहिए।
Class Myclass{ Myclass(); Method1() { } }
क्लास के लिए ऑब्जेक्ट बनाते समय, मायक्लास मायोबज = नया मायक्लास ();
कंस्ट्रक्टर विधि कहा जाएगा। कंस्ट्रक्टर स्वतः जावा कंपाइलर द्वारा डिफ़ॉल्ट रूप से सभी वर्गों के लिए बनाया जाता है।
public class ConstructorExampleProgram { int employee_age; String employee_name; int employee_salary; //Default constructor ConstructorExampleProgram(){ this.employee_name=Bob'; this.employee_age=30; this.employee_salary=7000; } //Parameterized constructor ConstructorExampleProgram(String n,int a,int b){ this.employee_name=n; this.employee_age=a; this.employee_salary=b; } public static void main(String args()){ ConstructorExampleProgram obj1 = new ConstructorExampleProgram(); ConstructorExampleProgram obj2 = new ConstructorExampleProgram('clare', 56,7500); System.out.println(obj1.employee_name+' '+obj1.employee_age+' '+obj1.employee_salary); System.out.println(obj2.employee_name+' '+obj2.employee_age+' '+obj2.employee_salary); } }
निर्माता के लिए नियमों का पालन किया जाना चाहिए:
- निर्माणकर्ता के पास कक्षा नाम के समान नाम होना चाहिए।
- कंस्ट्रक्टर के पास रिटर्न स्टेटमेंट नहीं होना चाहिए।
ध्यान दिए जाने वाले बिंदु:
- ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में, ऑब्जेक्ट प्रोग्रामिंग का मुख्य हिस्सा होते हैं।
- ओओपी अवधारणाएँ वस्तु, वर्ग, वंशानुक्रम, बहुरूपता, रचनाकार हैं।
- सुपर कीवर्ड का उपयोग मूल वर्ग के सदस्यों को संदर्भित करने के लिए किया जाता है, और यह वर्तमान क्लास ऑब्जेक्ट को संदर्भित करने के लिए कीवर्ड का उपयोग किया जाता है।
- कन्स्ट्रक्टर्स उन तरीकों की तरह हैं जिन्हें क्लास के लिए ऑब्जेक्ट बनाए जाने पर कहा जाएगा।
निष्कर्ष
इस ट्यूटोरियल ने जावा द्वारा समर्थित महत्वपूर्ण वस्तु-उन्मुख सुविधाओं की मूल बातें शामिल कीं। यह जावा में OOPS पर सिर्फ एक परिचयात्मक ट्यूटोरियल है। हम अपने बाद के ट्यूटोरियल में विस्तार से सभी विषयों को कवर करेंगे। जावा OOP के चार स्तंभों का समर्थन करता है यानी बहुरूपता, वंशानुक्रम, अमूर्तता और एनकैप्सुलेशन।
इन सुविधाओं के अलावा, जावा अन्य विशेषताओं और ओओपी निर्माणों का भी समर्थन करता है, जैसे कि रोकथाम, एकत्रीकरण, संदेश पासिंग आदि, जो हमारे आगामी ट्यूटोरियल में चर्चा करेंगे।
अनुशंसित पाठ
- जावा ट्यूटोरियल फॉर बिगिनर्स: 100+ हैंड्स-ऑन जावा वीडियो ट्यूटोरियल
- जावा में अमूर्तता क्या है - उदाहरणों के साथ जानें
- जावा में इनहेरिटेंस क्या है - उदाहरणों के साथ ट्यूटोरियल
- जावा में बहुरूपता क्या है - उदाहरणों के साथ ट्यूटोरियल
- जावा में एनकैप्सुलेशन: उदाहरणों के साथ पूरा ट्यूटोरियल
- जावा में वंशानुक्रम के प्रकार - एकल बनाम एकाधिक वंशानुक्रम
- OOPS कॉन्सेप्ट इन C #: ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग कॉन्सेप्ट ट्यूटोरियल
- C ++ में ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग