Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

क्या Java में डिफ़ॉल्ट कंस्ट्रक्टर में स्टेटिक वेरिएबल आरंभ किए जा सकते हैं?

हाँ, स्टेटिक वेरिएबल को कंस्ट्रक्टर में आरंभ किया जा सकता है, लेकिन यह अनुशंसित नहीं है क्योंकि कंस्ट्रक्टर प्रति इंस्टेंस चलता है, जिससे स्टेटिक फ़ील्ड बार-बार ओवरराइट होती है।

उदाहरण (संभव लेकिन खराब अभ्यास)

public class DefaultExample {
    static String name;
    static int age;

    DefaultExample() {
        name = "Krishna";
        age = 25;
    }

    public static void main(String args[]) {
        new DefaultExample(); // स्टेटिक फ़ील्ड सेट करता है
        System.out.println(DefaultExample.name); // Krishna
        System.out.println(DefaultExample.age);  // 25
    }
}

आउटपुट

Krishna
25

Final + Static: कंस्ट्रक्टर में अनुमति नहीं

यदि एक वेरिएबल static final है, तो इसे कंस्ट्रक्टर में आरंभ नहीं किया जा सकता। कंपाइलर इसे पुनर्असाइनमेंट मानता है।

public class DefaultExample {
    static final String name;
    static final int age;

    DefaultExample() {
        name = "Krishna"; // संकलन त्रुटि
        age = 25;         // संकलन त्रुटि
    }
}

संकलन त्रुटि

DefaultExample.java:5: error: cannot assign a value to final variable name
    name = "Krishna";
    ^

सही दृष्टिकोण

  • static final को घोषणा या स्थैतिक ब्लॉक में आरंभ करें।
  • साधारण static फ़ील्ड्स को स्थैतिक ब्लॉक या घोषणा पर आरंभ करें, कंस्ट्रक्टर में नहीं।
  1. - क्या Java में कंस्ट्रक्टर अपवाद फेंक सकता है?

    हां, कंस्ट्रक्टर्स को Java में अपवाद फेंकने की अनुमति है। एक कंस्ट्रक्टर एक विशेष प्रकार का मेथड है जिसका उपयोग ऑब्जेक्ट को इनिशियलाइज़ करने के लिए किया जाता है और इसका उपयोग new कीवर्ड का उपयोग करके क्लास का ऑब्जेक्ट बनाने के लिए किया जाता है, जहां एक ऑब्जेक्ट को क्लास के इंस्टेंस के रूप में भी ज

  1. - Java में इंटरफेस वेरिएबल्स डिफ़ॉल्ट रूप से static और final क्यों होते हैं?

    एक इंटरफेस व्यवहार का प्रोटोकॉल परिभाषित करता है, न कि हमें कैसे कार्यान्वित करना चाहिए। जो क्लास इंटरफेस को इम्प्लीमेंट करती है, वह उस इंटरफेस द्वारा परिभाषित प्रोटोकॉल का पालन करती है। इंटरफेस वेरिएबल्स static होते हैं क्योंकि Java इंटरफेस को अपने आप इंस्टेंशिएट नहीं किया जा सकता। वेरिएबल का मा

  1. - क्या हम Java में blank final वेरिएबल को इनिशियलाइज़ कर सकते हैं

    हां! आप कंस्ट्रक्टर या इंस्टेंस इनिशियलाइज़ेशन ब्लॉक में blank final वेरिएबल को इनिशियलाइज़ कर सकते हैं।