2012-05-05 24 views
12
class Employee{ 
// salary variable is a private static variable 
private static double salary; 

// DEPARTMENT is a constant 
public static final String DEPARTMENT = "Development"; 

public static void main(String args[]){ 
    salary = 1000; 
    System.out.println(DEPARTMENT+ " average salary:"+salary); 
} 
} 

इस जावा प्रोग्राम में एक स्थिर चर शामिल है। लेकिन मैं सार्वजनिक और निजी स्थैतिक चर के बीच अंतर को समझ नहीं सकता।सार्वजनिक स्थिर और निजी स्थैतिक चर के बीच अंतर

उत्तर

23

कोड में सार्वजनिक रूप से हर जगह पहुंच योग्य है - एक निजी चर केवल कक्षा के भीतर ही पहुंच योग्य है। इस मामले में आप Employee.salaryEmployee कक्षा के भीतर उपयोग कर रहे हैं, तो यह ठीक है।

ध्यान दें कि स्थैतिक स्थिर स्थिरता एक पूरी तरह से अलग मामला है - और विधियों और वर्गों में चर के रूप में समानता है।

एक्सेस के अन्य स्तर भी उपलब्ध हैं - protected और डिफ़ॉल्ट "पैकेज" पहुंच (जिसे स्पष्ट रूप से निर्दिष्ट नहीं किया जा सकता है)। section 6.6 of the Java Language Specification for more details देखें।

(एक तरफ मामले के रूप में, यह भी क्या static का मतलब है के बारे में सीखने लायक है - आप लगभग निश्चित रूप से नहीं करना चाहती इन चरों स्टैटिक्स हो सकता है, के रूप में वे प्रत्येकEmployee बजाय सामान्य रूप में Employee अवधारणा के लिए लागू होते हैं। यह अजीब DEPARTMENT एक निरंतर यहां भी होने के लिए है।)

+0

समझ गया। एक टन धन्यवाद :) –

+0

मुझे नहीं लगता कि हमें कभी भी निजी स्थैतिक चर की आवश्यकता है – Sameer

+0

@ समीर: मैं * पूरी तरह से असहमत हूं। जबकि मैं सामान्य रूप से स्थैतिक चर को नापसंद करता हूं, मैं निश्चित रूप से दावा नहीं करता कि वे * कभी * आवश्यक नहीं हैं। क्या आप स्थिर स्थिर चर हैं जिन्हें आपने कभी भी स्थिरांक का उपयोग किया है? (यहां तक ​​कि स्थिरांक भी निजी रूप से बेहतर हो सकते हैं, कभी-कभी ...) –

1

जाहिर है, आप कक्षा के बाहर से private स्थिर चर का उपयोग नहीं कर सकते हैं, और आप हर जगह से public स्थिर चर का उपयोग कर सकते हैं।

+0

फिर से देखें। परिवर्तनीय वेतन निजी है। लेकिन अगर यह निजी है तो यह लाइन "सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग तर्क []) { वेतन = 1000;" वेतन का उपयोग? –

+2

@Androidmaid: क्योंकि आप इसे उसी वर्ग (कर्मचारी) के भीतर से एक्सेस कर रहे हैं। –

+0

आज के कंप्यूटर/तकनीक के साथ, स्मृति का एक छोटा सा हिस्सा कोई नुकसान नहीं करेगा – BeyondProgrammer

25
  • एक public चर कहीं से भी पहुँचा जा सकता है (अच्छी तरह से, कहीं भी, जहां वर्ग पहुँचा जा सकता है)।

  • private परिवर्तनीय कक्षा के भीतर केवल पहुंच योग्य है।

  • static चर वर्ग के उदाहरण के बजाय कक्षा से संबंधित है।

  • ध्यान दें कि परिवर्तनीय DEPARTMENT भी final है, जिसका अर्थ यह है कि इसे सेट करने के बाद इसे संशोधित नहीं किया जा सकता है। यह यहां महत्वपूर्ण है क्योंकि यह खराब कोड होने से बचाता है - चर स्थिर है इसलिए कक्षाओं के बाहर चीजों को एक्सेस करना ठीक है।

+0

ग्रेट। मुझे अंतिम पर भ्रम है। –

3
private static double salary 

केवल वर्ग के भीतर उपलब्ध है और

public static final String DEPARTMENT 

इस वर्ग के बाहर से भी एक्सेस किया जा सकता है

salary or Employee.salary 

जबकि के रूप में

इस प्रकार पहुँचा जा सकता है
Employee.DEPARTMENT 
3

सार्वजनिक स्थैतिक - कक्षा के साथ-साथ कक्षा के बाहर से भी पहुंचा जा सकता है।

निजी स्थिर - केवल कक्षा के भीतर से ही पहुंचा जा सकता है।

स्टेटिक को ओओपीएस में एंटी-ओओ माना जाता है।

उदाहरण: निजी स्थैतिक स्ट्रिंग एक्स; केवल

सार्वजनिक स्थिर स्ट्रिंग x के भीतर ही पहुंचा जा सकता है; वर्ग कुत्ते में

Dog.x के साथ कहीं से भी पहुंचा जा सकता है;

हैप्पी कोडिंग!