types classes java
यह ट्यूटोरियल जावा के विभिन्न प्रकारों पर चर्चा करेगा जैसे सार, कंक्रीट, फाइनल, इनर, पीओजेओ, स्टेटिक और अन्य विशेष वर्गों के साथ विवरण:
हमारे पिछले ट्यूटोरियल में, हमने जावा में कक्षाओं और वस्तुओं पर चर्चा की। जावा में एक वर्ग एक खाका या खाका है। इसे समान वस्तुओं के संग्रह के रूप में भी परिभाषित किया जा सकता है। हम प्रकार वर्ग की वस्तुओं को परिभाषित करते हैं और फिर इन वस्तुओं के माध्यम से संवाद करते हैं।
प्रत्येक वस्तु एक वर्ग का एक उदाहरण है जिसमें एक राज्य और व्यवहार होता है।
=> एक्सक्लूसिव जावा ट्रेनिंग ट्यूटोरियल सीरीज़ के लिए यहां जाएं।
आप क्या सीखेंगे:
जावा में वर्ग प्रकार - परिचय
हम सभी जानते हैं कि कक्षा में निम्नलिखित घटक हैं:
- संशोधक: कक्षा के लिए पहुँच निर्दिष्ट करें।
- कक्षा का नाम: वर्ग का नाम।
- कीवर्ड: यदि कोई वर्ग विस्तारित होता है या क्लास या इंटरफ़ेस लागू करता है, तो कीवर्ड सुझाव देता है।
- क्लास बॉडी घुंघराले कोष्ठक में संलग्न {}
उपयोग किए गए विभिन्न संशोधक, वर्ग निकाय निर्दिष्ट और उपयोग किए गए कीवर्ड के आधार पर, हमारे पास जावा में विभिन्न प्रकार की कक्षाएं हैं।
सॉफ्टवेयर इंजीनियरिंग में जीवन चक्र मॉडल
- ठोस वर्ग: एक सामान्य वर्ग जिसमें विधियों का ठोस कार्यान्वयन है।
- POJO वर्ग: यह 'प्लेन ओल्ड जावा ऑब्जेक्ट' है जिसमें इन वैरिएबल्स तक पहुंचने के लिए केवल निजी सदस्य चर और गेट्टर सेटर विधियां हैं।
- सार वर्ग: इस वर्ग में एक या अधिक सार विधियाँ हैं।
- अंतिम वर्ग: एक अंतिम वर्ग को विरासत में नहीं दिया जा सकता है।
- स्थिर वर्ग: केवल स्थिर सदस्यों वाला एक वर्ग।
- भीतरी वर्ग: एक आंतरिक वर्ग एक वर्ग है जो किसी अन्य वर्ग का सदस्य है।
इस ट्यूटोरियल में, हम इनमें से प्रत्येक वर्ग के उदाहरणों के साथ चर्चा करेंगे।
हम कुछ अन्य प्रकार की कक्षाओं पर भी चर्चा करेंगे जिन्हें जावा में विशेष कक्षाएं माना जाता है।
- अनाम वर्ग: बिना किसी नाम के एक वर्ग।
- अपरिवर्तनीय वर्ग: एक ऐसा वर्ग जिसकी वस्तु नहीं बदली जा सकती।
- सिंगलटन वर्ग: एक ऐसा वर्ग जिसका एकल उदाहरण बनाया जा सकता है।
- ऑब्जेक्ट क्लास: सभी जावा सुविधाओं का आधार वर्ग।
- आवरण वर्ग: जावा में प्रत्येक आदिम डेटा प्रकार में एक आवरण वर्ग होता है।
लेकिन पहले, आइए संक्षेप में चर्चा करें कि जावा में मुख्य वर्ग के साथ जावा में एक वर्ग को कैसे आयात किया जाए जिसमें मुख्य विधि या जावा में शुरुआती बिंदु शामिल हो।
जावा में आयात
जावा में, यदि हम अपने प्रोग्राम में कोई सुविधा या कार्यक्षमता शामिल करना चाहते हैं, तो हम 'आयात' कथन का उपयोग कर सकते हैं। आयात स्टेटमेंट का उपयोग करके हम एक पूरे पैकेज को आयात कर सकते हैं और अपने प्रोग्राम में इसकी कार्यक्षमता का उपयोग कर सकते हैं या हम एक एकल वर्ग को भी शामिल कर सकते हैं।
नीचे दिए गए आयात विवरण के लिए वाक्यविन्यास है।
import packageName/classname;
अगर हम java.lang पैकेज और उसकी सभी कक्षाओं को आयात करना चाहते हैं, तो हम निम्नलिखित विवरण लिख सकते हैं:
import java.lang.*;
मान लें कि हम अपने प्रोग्राम में एरेस वर्ग की कार्यक्षमता को शामिल करना चाहते हैं, तो हम निम्नलिखित कथन लिख सकते हैं:
import java.util.Arrays;
आयात कथन C / C ++ के बराबर है जिसमें कथन शामिल है। इम्पोर्ट स्टेटमेंट को जावा प्रोग्राम की शुरुआत में पहले स्टेटमेंट के रूप में रखा गया है। जावा प्रोग्राम में हमारे पास एक से अधिक स्टेटमेंट हो सकते हैं।
जावा में मुख्य वर्ग
हम पहले से ही जानते हैं कि जावा में, मुख्य () विधि किसी भी कार्यक्रम के निष्पादन का शुरुआती बिंदु है और इसे उस विशेष एप्लिकेशन के किसी भी वर्ग में रखा जा सकता है। हालांकि, अगर हमारे पास बहुत सारी फ़ाइलों और कक्षाओं के साथ एक जटिल अनुप्रयोग है, तो यह मुख्य वर्ग है और इस मुख्य वर्ग में मुख्य () पद्धति को रखना उचित है।
class Main{ public static void main(String() args){ System.out.println(“Hello, World!”); } }
ध्यान दें कि JVM क्लास मेन का ऑब्जेक्ट नहीं बनाता है। इसके पीछे तर्क यह है कि जैसा कि मुख्य () एक स्थिर विधि है, इसे बिना किसी क्लास ऑब्जेक्ट के कहा जा सकता है।
जावा में कक्षाओं के प्रकार
अब जावा में किस प्रकार की कक्षाओं में चलते हैं। हम इनमें से प्रत्येक कक्षा को एक के बाद एक प्रोग्रामिंग उदाहरणों द्वारा समझाएंगे।
(1) ठोस वर्ग
एक जावा प्रोग्राम में एक ठोस वर्ग कोई भी सामान्य वर्ग है। इस वर्ग में कोई सार पद्धति नहीं होगी। कंक्रीट क्लास में सभी तरीके पूरी तरह से लागू हैं।
एक ठोस वर्ग दूसरे वर्ग से विरासत में मिल सकता है, यहां तक कि एक सार वर्ग या एक इंटरफ़ेस लागू कर सकता है। हम ठोस वर्ग को तुरंत बना सकते हैं और उसकी वस्तुओं का निर्माण कर सकते हैं।
एक ठोस वर्ग का एक सरल उदाहरण नीचे दिखाया गया है।
public class Main { // Concrete Class example static int total(int val1, int val2) { return val1 + val2; } public static void main(String args()) { int sum = total(100, 108); System.out.println('Total of two integers: ' + sum); } }
उत्पादन
उपरोक्त कार्यक्रम एक ठोस वर्ग को दर्शाता है। हम देखते हैं कि इस वर्ग का पूर्ण कार्यान्वयन है। अधूरा या असंयमित कुछ भी नहीं बचा है।
# 2) पीओजेओ क्लास
एक POJO (सादा पुराना जावा ऑब्जेक्ट) एक वर्ग है जिसमें केवल निजी सदस्य चर होते हैं। निजी सदस्य चर के अलावा इसमें केवल गेटटर और सेटर विधियां शामिल हैं, जिनका उपयोग इन सदस्य चर द्वारा किया जाता है।
एक POJO वर्ग का व्यवहार नहीं होता है। हालाँकि, यह कुछ विधियों जैसे कि समतुल्य या इंटरफ़ेस को ओवरराइड कर सकता है।
POJO वर्ग के गुण:
- POJO वर्ग के पास एक सार्वजनिक गेटटर और सेटर विधि होनी चाहिए।
- सभी सदस्य या उदाहरण चर निजी होने चाहिए।
- POJO वर्ग उन वर्गों या इंटरफेस का विस्तार या कार्यान्वयन नहीं करता है जो पूर्व-निर्दिष्ट हैं।
- उनमें वे एनोटेशन नहीं हैं जो पूर्व-निर्दिष्ट हैं।
- बिना किसी तर्क (बिना तर्क के कंस्ट्रक्टर) के पास कंस्ट्रक्टर नहीं है।
नीचे दिया गया एक जावा प्रोग्राम है जो POJO वर्ग को प्रदर्शित करता है।
//declare a POJO class class POJO_Class { private int daysOfWeek=7; //private variable public int getdaysOfWeek() { //getter return daysOfWeek; } public void setdaysOfWeek(int dow) { //setter this.daysOfWeek = dow; } } public class Main { public static void main(String args()){ POJO_Class pojoDemo = new POJO_Class(); //instance of POJO class System.out.println('Days of the week:' + pojoDemo.getdaysOfWeek()); } }
उत्पादन
POJO वर्ग के उपरोक्त प्रदर्शन से पता चलता है कि इसके पास एक निजी चर है और इस चर के लिए गेटर सेटर विधियां हैं। इस सदस्य चर का उपयोग करने के लिए, हम गेट्टर विधि का उपयोग करते हैं। मान को अद्यतन करने के लिए सेटर विधि का उपयोग किया जाता है।
# 3) सार वर्ग
एक अमूर्त वर्ग एक ऐसा वर्ग है जो अधूरा है या जिसका कार्यान्वयन पूरा नहीं हुआ है। एक सार वर्ग को तुरंत नहीं किया जा सकता है। इसे अन्य वर्गों द्वारा बढ़ाया जाना चाहिए और एक ठोस वर्ग बनाने के लिए अपने तरीकों को लागू करना चाहिए।
'अमूर्त' कीवर्ड का उपयोग करके एक सार वर्ग घोषित किया जाता है। एक सार वर्ग में स्थिर और अंतिम तरीके के साथ-साथ निर्माता भी हो सकते हैं।
आइए जावा में एक सार वर्ग प्रदर्शित करते हैं।
interface multiply //interface multiply { int product(int num1, int num2); } // abstract class abstract class Product implements multiply { // this is an abstract method to calculate product of two numbers public abstract int product(int num1, int num2); } // Concrete class :this will implement the abstract method above class Main extends Product { public int product(int num1, int num2) { return num1*num2; } // main method public static void main(String args()) { Main obj = new Main(); int prod = obj.product(100, 20); // print product System.out.println('Product of two numbers: ' + prod); } }
उत्पादन
उपरोक्त कार्यक्रम में, हमारे पास एक इंटरफ़ेस है। हम एक अमूर्त वर्ग उत्पाद बनाते हैं जो एक गुणा इंटरफ़ेस को लागू करता है। उत्पाद के अंदर, हमारे पास एक विधि उत्पाद है जिसे लागू नहीं किया गया है। फिर हमारे पास एक मुख्य वर्ग है जो उत्पाद वर्ग को विरासत में देता है और उत्पाद विधि को लागू करता है। बाद में, हम इस विधि को मुख्य वर्ग वस्तु पर कहते हैं।
# 4) स्टेटिक क्लास
जावा में सामान्य रूप से स्थिर का अर्थ है वह वस्तु जो किसी वर्ग से संबंधित है न कि व्यक्तिगत उदाहरणों से। तो जावा में एक स्थिर सदस्य या विधि को किसी ऑब्जेक्ट के साथ एक्सेस नहीं किया जाना चाहिए, बल्कि सीधे क्लास नाम का उपयोग करना चाहिए।
जावा में एक स्थिर वर्ग में केवल स्थिर सदस्य हो सकते हैं। इसके अलावा, हम एक स्थिर वर्ग को तुरंत नहीं भेज सकते हैं।
निम्न जावा प्रोग्राम एक स्थिर वर्ग प्रदर्शित करता है।
class Static_Class { static int total; // static variable static void sum(int val1, int val2) { // static method System.out.print('Static method to calculate sum:' + ' '); total = val1 + val2; System.out.println(val1 + '+' + val2); // print the numbers } static class Nested_Class { // static class static { // static block System.out.println('static block inside a static nested class'); } public void displaySum() { sum(25, 75); // call static method // print the value in static variable total, it holds the sum of two numbers System.out.println('Sum of two numbers:' + total); } } } public class Main { public static void main(String args()) { // declare static class object Static_Class.Nested_Class object = new Static_Class.Nested_Class(); object.displaySum(); // call displaySum method inside a static class } }
उत्पादन
उपरोक्त वर्ग स्थिर वर्ग प्रदर्शित करता है। यहां हमारे पास एक स्थिर वर्ग है जो दूसरे ठोस वर्ग का सदस्य है। स्थिर वर्ग के अंदर, हम दो संख्याओं की गणना करते हैं और परिणाम को एक स्थिर चर में संग्रहीत करते हैं जो बाहरी वर्ग का सदस्य है।
# 5) फाइनल क्लास
एक अंतिम वर्ग एक ऐसा वर्ग है जिसे विरासत में प्राप्त या उपवर्गित नहीं किया जा सकता है। एक बार जब एक कक्षा को जावा में अंतिम घोषित किया जाता है, तो यह एक प्रकार का स्थिर होता है और यह अपरिवर्तनीय हो जाता है।
इसलिए एक कक्षा को अपरिवर्तनीय बनाने के लिए, हमें इसे अंतिम घोषित करना होगा।
//final class final class Base_Class { void Display() { System.out.println('Base_Class::Display()'); } } //class Derived_Class extends Base_Class { //Compile-time error - can't inherit final class class Derived_Class{ void Display() { System.out.println('Derived_Class::Display()'); } } public class Main { public static void main(String() arg) { Base_Class base_obj = new Base_Class(); //create a final class object base_obj.Display(); Derived_Class deri_obj = new Derived_Class(); deri_obj.Display(); } }
उत्पादन
उपरोक्त कार्यक्रम पहले एक Base_Class घोषित करता है जिसे 'अंतिम' चिह्नित किया गया है। इसलिए जब हम इसे Derived_Class में विस्तारित करने का प्रयास करते हैं, तो हमें एक कंपाइलर त्रुटि मिलती है। (टिप्पणी लाइन)। लेकिन हम इसकी वस्तु बना सकते हैं और प्रदर्शन विधि को कॉल कर सकते हैं।
# 6) नेस्टेड क्लास / इनर क्लास
नेस्टेड को बढ़ाने के लिए नेस्टेड क्लास, जिसे जावा में इनर क्लास भी कहा जाता है। एक नेस्टेड क्लास / इनर क्लास एक अन्य वर्ग के अंदर संलग्न वर्ग है।
जैसे किसी वर्ग के पास उसके सदस्य के रूप में चर और विधियां होती हैं, वह अपने सदस्य के रूप में एक आंतरिक वर्ग भी रख सकता है।
एक नेस्टेड वर्ग में निम्नलिखित संरचना होती है:
class OuterClass{ class NestedClass{ //nested class code… } //outerclass code… }
भीतरी वर्गों में निम्नलिखित उपप्रकार होते हैं:
- नेस्टेड इनर क्लास
- विधि स्थानीय आंतरिक वर्ग
- अनाम भीतरी वर्ग
- स्टेटिक नेस्टेड क्लास
# 1) नेस्टेड इनर क्लास
एक नेस्टेड आंतरिक वर्ग में बाहरी वर्ग के निजी सदस्य चर तक पहुंच होती है। हम नेस्टेड इनर क्लास में एक्सेस मॉडिफायर भी लगा सकते हैं।
# 2) विधि स्थानीय आंतरिक वर्ग
यह आंतरिक वर्ग है जिसे बाहरी वर्ग विधि के अंदर घोषित किया गया है।
# 3) बेनामी इनर क्लास
अनाम आंतरिक वर्ग एक बाहरी वर्ग के अंदर घोषित एक आंतरिक वर्ग है और बिना किसी नाम के है।
# 4) स्टेटिक नेस्टेड क्लास
जिस तरह से एक क्लास में एक स्थिर सदस्य चर होता है, उसके सदस्य के रूप में एक स्थिर वर्ग भी हो सकता है।
एक नेस्टेड / इनर वर्ग का एक उदाहरण नीचे दिया गया है:
public class Main { //nested/inner class enclosed inside Main class. class InnerClass { public void inner_print() { System.out.println('Inner class'); } } public static void main(String() args) { System.out.println('Main in Outer class'); } }
उत्पादन
जावा में अन्य विशेष कक्षाएं
जावा में अपरिवर्तनीय वर्ग
एक अपरिवर्तनीय वर्ग अपरिवर्तनीय वस्तुओं को उत्पन्न करता है। एक अपरिवर्तनीय वस्तु एक ऐसी वस्तु है, जिसकी वस्तु के निर्माण के बाद सामग्री को बदला नहीं जा सकता है। तो एक अपरिवर्तनीय वर्ग वह है जिसकी वस्तु को एक बार बनाया नहीं जा सकता है।
आदिम प्रकार (पूर्णांक, बूलियन, बाइट, आदि) के लिए जावा में सभी आवरण वर्ग अपरिवर्तनीय हैं। स्ट्रिंग क्लास भी अपरिवर्तनीय है।
हमारे पास जावा में उपयोगकर्ता-परिभाषित अपरिवर्तनीय कक्षाएं भी हो सकती हैं।
किसी वर्ग के अपरिवर्तनीय होने के लिए, उसे अपने सभी डेटा सदस्यों के साथ अंतिम रूप से घोषित करने की आवश्यकता होती है। इसके अलावा, कक्षा में एक पैरामीटर निर्मित निर्माता होना चाहिए। सभी सदस्य चर में एक गेटर विधि होनी चाहिए, लेकिन एक सेटर विधि नहीं।
एक वर्ग के अपरिवर्तनीय होने के लिए उपरोक्त सभी आवश्यकताओं को पूरा किया जाना चाहिए।
चलिए अपरिवर्तनीय कक्षा को प्रदर्शित करने के लिए एक जावा प्रोग्राम लागू करते हैं।
final class City { final String city_name; final int cityId; //parameterised constructor public City(String name, int id) { this.city_name = name; this.cityId = id; } //getters for member variables public String getcityName() { return city_name; } public int getcityId() { return cityId; } } // Driver class class Main { public static void main(String args()) { City city = new City('New York', 1001); System.out.print('City Id:' + city.getcityId() + ' '); System.out.println('City Name:' + city.getcityName()); //city.cityId = 1002; //cannot assign a value to final variable regNo } }
उत्पादन
c ++ प्रश्न और उत्तर
उपरोक्त कार्यक्रम में, हमने एक सिटी क्लास घोषित किया है। यह एक अंतिम वर्ग है और इस वर्ग में, हमने दो सदस्य चर और एक पैरामीटर निर्माणकर्ता घोषित किया है। हमने इन दो सदस्य चरों के लिए गेट्टर विधियाँ भी घोषित की हैं। इसलिए सिटी क्लास एक अपरिवर्तनीय वर्ग की सभी आवश्यकताओं को पूरा करता है।
मुख्य विधि में कोड की टिप्पणी लाइन पर ध्यान दें। यदि हम इस पंक्ति को अनसुना करते हैं, तो हमें एक कंपाइलर त्रुटि (यहां टिप्पणी में प्रदान की गई है) मिलेगी क्योंकि हम सदस्य चर के लिए मान सेट करने का प्रयास कर रहे हैं।
जावा में सिंगलटन क्लास
एक एकल वर्ग एक समय में एक ही उदाहरण देता है। जावा में, एक सिंगलटन एक डिज़ाइन पैटर्न है। यह डिजाइन पैटर्न यह सुनिश्चित करता है कि किसी भी समय किसी वर्ग का केवल एक उदाहरण मौजूद हो। इसलिए सिंगलटन के रूप में परिभाषित किसी भी वर्ग में एक एकल पहुंच बिंदु है और यह वैश्विक है।
ध्यान दें कि अनुप्रयोग जीवन चक्र की समाप्ति सामान्य कक्षाओं की तरह एकल वर्ग को नष्ट नहीं करती है। जब एक वर्ग को सिंगलटन घोषित किया जाता है, तो हम हर बार एक नया उदाहरण नहीं बनाते हैं जब ऑब्जेक्ट के लिए एक नया अनुरोध किया जाता है।
एक ही उदाहरण का उपयोग बार-बार किया जाता है। इस तरह हम ज्यादातर मल्टी-थ्रेडेड और डेटाबेस एप्लिकेशन के मामले में मेमोरी स्पेस बचा सकते हैं।
हम कैशिंग, लॉगिंग आदि गतिविधियों के लिए एक सिंगलटन क्लास का उपयोग कर सकते हैं।
निम्नलिखित कार्यक्रम एक सिंगलटन वर्ग प्रदर्शित करता है।
class Singleton { // static variable of type Singleton private static Singleton single_instance = null; // String variable public String str; // private constructor : restricted to this class private Singleton() { str = 'Singleton class::private constructor'; } // create instance of Singleton class using getInstance static method public static Singleton getInstance() { if (single_instance == null) single_instance = new Singleton(); return single_instance; } } class Main { public static void main(String args()) { // instantiate Singleton class with obj1 Singleton obj1 = Singleton.getInstance(); // instantiate Singleton class with obj2 Singleton obj2 = Singleton.getInstance(); System.out.println('obj1(str):' + obj1.str); System.out.println('obj2(str):' + obj2.str); // change variable of instance obj1 obj1.str = (obj1.str).toUpperCase(); System.out.println('
After changing obj1(str):'); System.out.println('obj1(str):' + obj1.str); System.out.println('obj2(str):' + obj2.str); } }
उत्पादन
उपरोक्त कार्यक्रम में, हमने एक निजी निर्माणकर्ता के साथ एक एकल वर्ग को परिभाषित किया है। हमने स्ट्रिंग प्रकार के एक सदस्य चर को परिभाषित किया है। मुख्य विधि में, हम एकल वर्ग के दो उदाहरणों की घोषणा करते हैं। फिर हम एक उदाहरण का उपयोग करके स्ट्रिंग चर को बदलते हैं।
जब हम दोनों उदाहरणों के लिए स्ट्रिंग मान प्रिंट करते हैं, तो हम ध्यान देते हैं कि स्ट्रिंग चर मान दोनों उदाहरणों के लिए बदल गया है। इसलिए, भले ही हमने केवल एक उदाहरण के लिए मूल्य बदल दिया हो, क्योंकि सिंगलटन वर्ग के कारण, सभी उदाहरणों में परिवर्तन दिखाई देते हैं।
हम हमेशा एक ही उदाहरण लौटाते हैं, भले ही हम अलग-अलग उदाहरण बनाते हैं।
जावा में ऑब्जेक्ट क्लास
ऑब्जेक्ट क्लास पैरेंट क्लास या जावा में पहली क्लास है। यह जावा पदानुक्रम के शीर्ष स्तर पर है।
जैसा कि सभी वर्गों में ऑब्जेक्ट क्लास एक सुपरक्लास के रूप में है, एरे के सभी जावा ऑब्जेक्ट ऑब्जेक्ट क्लास के तरीकों को लागू करते हैं। ऑब्जेक्ट क्लास 'java.lang' पैकेज में मौजूद है।
Java.lang.Object के लिए घोषणा है:
सार्वजनिक वर्ग की वस्तु
निम्न तालिका ऑब्जेक्ट क्लास के कंस्ट्रक्टर और विधियों का वर्णन करती है।
कंस्ट्रक्टर / विधि | विवरण |
---|---|
वर्ग getClass () | ऑब्जेक्ट का रनटाइम क्लास लौटाता है। |
ऑब्जेक्ट क्लास कंस्ट्रक्टर | |
वस्तु () | ऑब्जेक्ट क्लास कंस्ट्रक्टर |
ऑब्जेक्ट क्लास के तरीके | |
संरक्षित वस्तु क्लोन () | ऑब्जेक्ट का क्लोन या कॉपी लौटाता है। |
बूलियन बराबर (ऑब्जेक्ट obj) | जाँचता है कि क्या दी गई वस्तु obj इस वस्तु के बराबर है। |
संरक्षित शून्य को अंतिम रूप दें () | कचरा कलेक्टर द्वारा कॉल किया जाता है जब ऑब्जेक्ट के सभी संदर्भ नष्ट हो जाते हैं। |
int हैशकोड () | ऑब्जेक्ट के लिए रिटर्न हैश कोड। |
शून्य सूचित () | एक एकल प्रतीक्षा धागे को जगाने के लिए उपयोग करें। |
शून्य सूचित करें () | जागते हुए सभी सूत्र मिलते हैं। |
स्ट्रिंग toString () | वस्तु के बराबर स्ट्रिंग लौटाता है। |
शून्य प्रतीक्षा () | एक थ्रेड को तब तक प्रतीक्षा करता है जब तक कि उसे दूसरे थ्रेड द्वारा अधिसूचित विधि द्वारा नहीं जगाया जाता। |
शून्य प्रतीक्षा (लंबी अवधि) | थ्रेड akes टाइमआउट ’द्वारा दिए गए समय तक प्रतीक्षा करता है या अधिसूचित या अधिसूचित तरीकों से जाग जाता है। |
शून्य प्रतीक्षा (लंबे समय तक, इंट नेनोस) | निर्दिष्ट समय बीत जाने तक या प्रतीक्षा करने तक थ्रेड का कारण बनता है या किसी अन्य थ्रेड द्वारा अधिसूचित () या नोटिफिकेशन () सूचित किया जाता है। |
आइए एक उदाहरण जावा प्रोग्राम को लागू करें जो ऑब्जेक्ट क्लास विधियों में से कुछ को प्रदर्शित करेगा।
public class Main { public static void main(String() args) { Main t = new Main(); System.out.println('Main class Object HashCode:' + t.hashCode()); t = null; // call garbage collector System.gc(); System.out.println('Main class:End'); } @Override protected void finalize() { System.out.println('Main Class::finalize method called.'); } }
उत्पादन
यहां हमारे पास एक मुख्य वर्ग है। मुख्य विधि () में हम मुख्य वर्ग की एक वस्तु बनाते हैं। यह ऑब्जेक्ट ऑब्जेक्ट क्लास का एक वंशज है और सभी ऑब्जेक्ट क्लास के तरीकों का समर्थन करता है। इस प्रकार हम इस ऑब्जेक्ट का उपयोग करते हैं और हैशकोड (), System.GC (), अंतिम रूप () आदि जैसे कुछ ऑब्जेक्ट क्लास तरीके कहते हैं।
जावा में रैपर क्लास
जावा एक सुविधा प्रदान करता है जिसे रैपर क्लास कहते हैं जिसमें एक तंत्र होता है जो आदिम डेटा प्रकार को ऑब्जेक्ट में परिवर्तित करता है और इसके विपरीत। रैपर कक्षाएं वे वर्ग हैं जो आदिम प्रकार जैसे इंट, चार आदि वस्तुओं के रूप में प्रतिनिधित्व करते हैं।
इस प्रकार जावा में प्रत्येक आदिम डेटा प्रकार का अपना संबंधित आवरण वर्ग होता है।
निम्न तालिका आदिम डेटा प्रकार और उनके समकक्ष आवरण वर्ग को दिखाती है।
आदिम प्रकार | आवरण प्रकार |
---|---|
तैरना | फ्लोट |
बूलियन | बूलियन |
char | चरित्र |
बाइट | बाइट |
कम | कम |
पूर्णांक | पूर्णांक |
लंबा | लंबा |
दोहरा | दोहरा |
आदिम वस्तुओं और वस्तुओं को आदिम में बदलने के लिए, हमारे पास क्रमशः 'ऑटोबॉक्सिंग' और 'बॉक्सिंग' नामक तकनीकें हैं। Ase Java एक ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग लैंग्वेज है, हम हमेशा ऑब्जेक्ट्स के साथ व्यवहार करते हैं, और हमारे पास कलेक्शन जैसी बहुत सी सुविधाएँ भी होती हैं, क्रमबद्धता इत्यादि, जिन्हें वस्तुओं और आदिम प्रकारों की भी आवश्यकता है।
इसलिए यह जरूरी है कि हमें हमेशा जावा में वस्तुओं और आदिम प्रकारों की आवश्यकता होती है और इस प्रकार हमें ऑटोबॉक्सिंग और अनबॉक्सिंग की इन तकनीकों की आवश्यकता होती है।
ऑटोबॉक्सिंग
ऑटोबॉक्सिंग एक संबंधित डेटा प्रकार को अपने संबंधित आवरण वर्ग के ऑब्जेक्ट में स्वचालित रूप से परिवर्तित करने की एक तकनीक है। उदाहरण के लिए इंटर्न का इंटर्न वर्ग में रूपांतरण, चरित्र वर्ग के लिए चार, आदि ऑटोबॉक्सिंग के उदाहरण हैं।
ध्यान दें: रैपर कक्षाएं जावा 5 के बाद से मूल्यह्रास की गई वस्तुओं में आदिम को परिवर्तित करने के लिए वैल्यूऑफ () पद्धति का उपयोग करती हैं।
बॉक्स से निकालना
रैपर श्रेणी की वस्तुओं को उनके संबंधित आदिम डेटा प्रकारों में परिवर्तित करने को 'अनबॉक्सिंग' कहा जाता है।
ध्यान दें: जावा 5 के बाद से, आवरण विधि () जो आवरण वस्तु को एक आदिम प्रकार में परिवर्तित करती है, अवमूल्यित हो जाती है।
नीचे दिए गए बॉक्सिंग / अनबॉक्सिंग का एक उदाहरण है।
public class Main { public static void main(String args()){ //Convert int to Integer : boxing int num=20; Integer int_class= Integer.valueOf(num);//explicit conversion from int to Integer Integer inum=num;//autoboxing System.out.println('int => Integer: ' + num+' => '+inum); //Convert Integer to int: unboxing Integer val=new Integer (3); int ival=val.intValue();//explicit conversion from Integer to int int jval=val;//unboxing System.out.println('Integer => int:' + val+' => '+jval); } }
उत्पादन
उपरोक्त कार्यक्रम इंटोब वैल्यू पर ऑटोबॉक्सिंग और अनबॉक्सिंग को दर्शाता है। पहले हम int को Integer object में बदल देते हैं और फिर एक Integer ऑब्जेक्ट को int data type में बदल दिया जाता है।
आइए एक प्रोग्राम को कार्यान्वित करें जो जावा में मौजूद आवरण वर्गों को प्रदर्शित करता है।
public class Main { public static void main(String args()) { byte bbyte=10; short sshort=20; int iint=300; long llong=400; float ffloat=3.14F; double ddouble=77.2D; char cchar='A'; boolean bboolean=true; //Convert primitives into objects => Autoboxing Byte byteobj=bbyte; Short shortobj=sshort; Integer intobj=iint; Long longobj=llong; Float floatobj=ffloat; Double doubleobj=ddouble; Character charobj=cchar; Boolean boolobj=bboolean; //Print converted objects System.out.println('Primitives converted to Objects:'); System.out.println('Byte object: '+byteobj); System.out.println('Short object: '+shortobj); System.out.println('Integer object: '+intobj); System.out.println('Long object: '+longobj); System.out.println('Float object: '+floatobj); System.out.println('Double object: '+doubleobj); System.out.println('Character object: '+charobj); System.out.println('Boolean object: '+boolobj); //Convert Objects to Primitives => Unboxing byte bytevalue=byteobj; short shortvalue=shortobj; int intvalue=intobj; long longvalue=longobj; float floatvalue=floatobj; double doublevalue=doubleobj; char charvalue=charobj; boolean boolvalue=boolobj; //Print primitives System.out.println('Converting Objects to Primitives'); System.out.println('byte value: '+bytevalue); System.out.println('short value: '+shortvalue); System.out.println('int value: '+intvalue); System.out.println('long value: '+longvalue); System.out.println('float value: '+floatvalue); System.out.println('double value: '+doublevalue); System.out.println('char value: '+charvalue); System.out.println('boolean value: '+boolvalue); } }
उत्पादन
उपरोक्त कार्यक्रम आउटपुट आदिम प्रकारों से आवरण वस्तुओं (ऑटोबॉक्सिंग) में रूपांतरण दिखाता है और आवरण वस्तुओं से आदिम प्रकारों (अनबॉक्सिंग) में रूपांतरण को उलट देता है।
बार बार पूछे जाने वाले प्रश्न
Q # 1) जावा में क्लास डेटा टाइप क्या है?
उत्तर: जावा 'क्लास' नामक एक वर्ग प्रदान करता है जिसमें सभी वर्गों, वस्तुओं और चल रहे एप्लिकेशन के इंटरफेस के बारे में जानकारी होती है। कक्षा वर्ग भी आदिम डेटा प्रकार और शून्य प्रकार का प्रतिनिधित्व करता है।
क्लास क्लास java.lang पैकेज का एक हिस्सा है।
Q # 2) जावा में सामान्य वर्ग क्या है?
उत्तर: जावा में एक सामान्य वर्ग एक गैर-स्थिर वर्ग है। हम नए कीवर्ड का उपयोग करके एक सामान्य वर्ग की वस्तुएं बना सकते हैं। साथ ही, किसी भी सामान्य वर्ग के सदस्य के रूप में एक और वर्ग हो सकता है। इस मामले में, सदस्य वर्ग को नेस्टेड या इनर क्लास कहा जाता है और एनक्लोजिंग क्लास को बाहरी वर्ग कहा जाता है।
c ++ और जावा अंतर
Q # 3) स्ट्रिंग स्ट्रिंग जावा में है?
उत्तर: नहीं, स्ट्रिंग जावा में एक आवरण वर्ग नहीं है। एक वर्ग के लिए एक रैपर वर्ग होने के लिए, हमें इसके संबंधित आदिम प्रकार की आवश्यकता है। उदाहरण के लिए, इंटेगर रैपर क्लास के लिए हमारे पास आदिम प्रकार इंट हैं। स्ट्रिंग क्लास के लिए, हमारे पास एक ही आदिम डेटा प्रकार नहीं है।
Q # 4) रैपर क्लास का क्या फायदा है?
उत्तर: वार्मर कक्षाओं का उपयोग आदिम डेटा प्रकारों को वस्तुओं में बदलने के लिए किया जाता है। दूसरे शब्दों में, रैपर कक्षाएं आदिम प्रकार की वस्तुओं में लपेटती हैं। आवरण वर्गों का उपयोग तब किया जाता है जब कुछ जावा जैसे संग्रह केवल वस्तुओं की अपेक्षा करते हैं न कि आदिम डेटा प्रकारों की।
Q # 5) जावा में सिंगलटन क्लास का उपयोग क्यों किया जाता है?
उत्तर: जब भी हम किसी विशेष वस्तु के लिए एक वैश्विक बिंदु चाहते हैं, तो हम एक सिंगलटन पैटर्न के लिए जाते हैं जो हमें एक सिंगलटन क्लास डिजाइन करने की अनुमति देता है जिसमें केवल एक ही उदाहरण होगा। सिंगलटन क्लासेस का उपयोग कैश, थ्रेड पूलिंग, डेटाबेस एप्लिकेशन, लॉगिंग आदि में किया जाता है।
निष्कर्ष
इस ट्यूटोरियल में, हमने जावा में उपयोग किए जाने वाले विभिन्न वर्ग प्रकारों को कवर किया है। हमने कंक्रीट, अमूर्त, अंतिम, स्थिर, नेस्टेड, पीओजेओ, आदि प्रकार के वर्ग देखे। इसके अलावा, हमने सिंगलटन क्लासेस, इम्यूटेबल क्लासेस पर भी चर्चा की और उनके कार्यान्वयन के उदाहरणों पर भी चर्चा की।
हमने जावा में रैपर क्लास और ऑब्जेक्ट क्लास को भी कवर किया है। रैपर कक्षाएं वे वर्ग हैं जो जावा के आदिम डेटा प्रकारों को वस्तुओं में लपेटते हैं। जावा में ऑब्जेक्ट क्लास अन्य सभी वर्गों का सुपरक्लास है। यह जावा पदानुक्रम में सबसे शीर्ष वर्ग है।
अब जब हमने जावा में क्लास और ऑब्जेक्ट्स और क्लास के प्रकारों पर चर्चा की है, तो अगले ट्यूटोरियल में हम जावा में कंस्ट्रक्टर्स पर विस्तृत चर्चा करेंगे।
=> यहाँ बिल्कुल सही जावा प्रशिक्षण गाइड देखें।
अनुशंसित पाठ
- उदाहरण के साथ जावा इंटरफेस और एब्सट्रैक्ट क्लास ट्यूटोरियल
- जावा बेसिक्स: जावा सिंटैक्स, जावा क्लास और कोर जावा कॉन्सेप्ट
- जावा में स्टेटिक कीवर्ड क्या है?
- जावा इंटेगर एंड जावा बिगइन्टेगर क्लास विद एग्जाम्पल्स
- उदाहरण के साथ जावा स्कैनर क्लास ट्यूटोरियल
- जावा क्लास बनाम ऑब्जेक्ट - जावा में क्लास और ऑब्जेक्ट का उपयोग कैसे करें
- जावा ऐरे क्लास ट्यूटोरियल - java.util.Arays क्लास उदाहरण के साथ
- जावा वेक्टर क्या है | उदाहरणों के साथ जावा वेक्टर क्लास ट्यूटोरियल