static
की अवधारणा को कक्षा या ऑब्जेक्ट (उदाहरण) का हिस्सा है या नहीं।
main
तरीका है जिसके static
के रूप में घोषित किया जाता है के मामले में, यह कहना है कि main
विधि एक वर्ग तरीका है - एक विधि है कि एक वर्ग है, नहीं एक वस्तु का हिस्सा का हिस्सा है। इसका मतलब है कि ClassName.method
का जिक्र करते हुए एक और वर्ग किसी अन्य वर्ग की कक्षा विधि को कॉल कर सकता है। उदाहरण के लिए, लागू MyClass
की रन विधि द्वारा पूरा किया जाएगा: दूसरी ओर, static
आपरिवर्तक के बिना एक विधि या क्षेत्र पर
MyClass.main(new String[]{"parameter1", "parameter2"});
मतलब है कि यह एक वस्तु का हिस्सा है (या भी कहा जाता है "उदाहरण") और एक वर्ग का हिस्सा नहीं है।
MyClass c1 = new MyClass();
c1.getInfo() // "getInfo" is an instance method of the object "c1"
साथ
प्रत्येक उदाहरण के अलग-अलग मान सकता है के रूप में, एक विधि के मूल्यों या क्षेत्र: यह विशिष्ट वस्तु जो करने के लिए विधि या क्षेत्र के अंतर्गत आता है, बल्कि वर्ग के नाम से के नाम से जाना जाता है विभिन्न वस्तुओं में एक ही नाम जरूरी ही होना आवश्यक नहीं है:
MyClass c1 = getAnotherInstance();
MyClass c2 = getAnotherInstance();
c1.value // The field "value" for "c1" contains 10.
c2.value // The field "value" for "c2" contains 12.
// Because "c1" and "c2" are different instances, and
// "value" is an instance field, they can contain different
// values.
उदाहरण और वर्ग चर के दो अवधारणाओं का मेल। मान लीजिए कि हम एक नया वर्ग है जो दोनों उदाहरण और वर्ग चर और तरीकों में शामिल है की घोषणा करते हैं:
class AnotherClass {
private int instanceVariable;
private static int classVariable = 42;
public int getInstanceVariable() {
return instanceVariable;
}
public static int getClassVariable() {
return classVariable;
}
public AnotherClass(int i) {
instanceVariable = i;
}
}
ऊपर वर्ग एक उदाहरण चर instanceVariable
, और एक वर्ग चर classVariable
जो एक static
संशोधक के साथ घोषित किया जाता है है। इसी प्रकार, मूल्यों को पुनर्प्राप्त करने के लिए एक उदाहरण और कक्षा विधि है।
उदाहरण के लिए कन्स्ट्रक्टर आवृत्ति चर को तर्क के रूप में असाइन करने के लिए एक मान लेता है। क्लास वेरिएबल को 42
के रूप में प्रारंभ किया गया है और कभी नहीं बदला गया है।
AnotherClass ac1 = new AnotherClass(10);
ac1.getInstanceVariable(); // Returns "10"
AnotherClass.getClassVariable(); // Returns "42"
सूचना अलग अलग तरीकों से वर्ग और उदाहरण तरीकों कहा जाता है:
वास्तव में ऊपर वर्ग का उपयोग करें और देखें कि क्या होता है। जिस तरह से वे कक्षा को AnotherClass
नाम से संदर्भित करते हैं, या ac1
नाम से उदाहरण। आगे जाने के लिए और तरीकों के व्यवहार मतभेद देखते हैं:
AnotherClass ac1 = new AnotherClass(10);
AnotherClass ac2 = new AnotherClass(20);
ac1.getInstanceVariable(); // Returns "10"
AnotherClass.getClassVariable(); // Returns "42"
ac2.getInstanceVariable(); // Returns "20"
AnotherClass.getClassVariable(); // Returns "42"
के रूप में देखा जा सकता है, एक उदाहरण चर है कि एक वस्तु द्वारा आयोजित किया जाता है एक (या "उदाहरण"), इसलिए कि विशेष रूप से उदाहरण के लिए अद्वितीय है, जो इस उदाहरण में ac1
और ac2
द्वारा निर्दिष्ट वस्तुओं को संदर्भित किया गया है।
दूसरी तरफ एक वर्ग चर उस पूरे वर्ग के लिए अद्वितीय है।
public int getClassVariableFromInstance() {
return classVariable;
}
फिर, चलाने के निम्नलिखित:
AnotherClass ac1 = new AnotherClass(10);
AnotherClass ac2 = new AnotherClass(20);
ac1.getInstanceVariable(); // Returns "10"
ac1.getClassVariableFromInstance(); // Returns "42"
ac2.getInstanceVariable(); // Returns "20"
ac2.getClassVariableFromInstance(); // Returns "42"
हालांकि getClassVariableFromInstance
एक उदाहरण विधि है, के रूप में किया जा रहा द्वारा देखा जा सकता और भी बेहतर भर में इस बिंदु पाने के लिए, के AnotherClass
करने के लिए एक नई विधि जोड़ें उदाहरण ac1
और ac2
के संदर्भ में आह्वान किया गया, वे दोनों एक ही मूल्य, 42
लौटते हैं। ऐसा इसलिए है क्योंकि दोनों उदाहरण विधियों में, वे क्लास विधि classVariable
का उल्लेख करते हैं जो कक्षा के लिए अद्वितीय है, उदाहरण के लिए नहीं - कक्षा AnotherClass
कक्षा के लिए classVariable
की केवल एक ही प्रति है।
मुझे आशा है कि कुछ लोग यह बताते हैं कि static
संशोधक के लिए क्या उपयोग किया जाता है।
The Java Tutorials सूर्य से Understanding Instance and Class Members नामक एक अनुभाग है, जो दो प्रकार के चर और विधियों में भी जाता है।
बहुत अच्छी व्याख्या। – Zaki
धन्यवाद एसओओ इसके लिए बहुत कुछ, इसने मेरे दिमाग में स्थिर कीवर्ड चमक दिया;) – Dayan