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

Java में कितने नॉन-एक्सेस मॉडिफायर्स हैं?


Java कुछ अन्य मॉडिफायर्स प्रदान करता है जो विजिबिलिटी के अलावा कार्यक्षमता प्रदान करते हैं। इन मॉडिफायर्स को नॉन-एक्सेस मॉडिफायर्स (Non-Access Modifiers) कहा जाता है।

Java के नॉन-एक्सेस मॉडिफायर्स

मॉडिफायरलागू होता हैविवरण
staticवेरिएबल्स, मेथड्स, नेस्टेड क्लासेस, इनिशियलाइजर ब्लॉक्समेंबर्स जो static घोषित हैं, क्लास के सभी इंस्टेंसेस के लिए सामान्य होते हैं। Static मेंबर्स क्लास-लेवल मेंबर्स होते हैं जो क्लास मेमोरी में स्टोर होते हैं।
finalवेरिएबल्स, मेथड्स, क्लासेसवेरिएबल, मेथड या क्लास के आगे संशोधन को प्रतिबंधित करता है। final वेरिएबल का मान एक बार असाइन होने के बाद बदला नहीं जा सकता। final मेथड को सबक्लास में ओवरराइड नहीं किया जा सकता और final क्लास का सबक्लास नहीं बनाया जा सकता।
abstractक्लासेस, मेथड्सक्लास या मेथड के साथ उपयोग किया जा सकता है। वेरिएबल और कंस्ट्रक्टर पर लागू नहीं होता। abstract मेथड को सबक्लास में इम्प्लीमेंट करना आवश्यक है। abstract क्लास को इंस्टेंशिएट नहीं किया जा सकता।
synchronizedमेथड्स, ब्लॉक्सकिसी विशेष मेथड या ब्लॉक की एकाधिक थ्रेड्स द्वारा एक्सेस को नियंत्रित करता है। केवल एक थ्रेड synchronized घोषित मेथड या ब्लॉक में प्रवेश कर सकता है।
transientवेरिएबल्स (इंस्टेंस)सीरियलाइजेशन प्रक्रिया में उपयोग होता है। transient घोषित वेरिएबल ऑब्जेक्ट सीरियलाइजेशन के दौरान सीरियलाइज़ नहीं होगा।
volatileवेरिएबल्स (इंस्टेंस/स्टेटिक)मल्टी-थ्रेडेड प्रोग्रामिंग में उपयोग होता है। यदि आप किसी फील्ड को volatile घोषित करते हैं, तो यह थ्रेड्स को संकेत देता है कि इसका मान उनके अपने स्टैक के बजाय मुख्य मेमोरी (main memory) से पढ़ा जाना चाहिए। क्योंकि volatile फील्ड सभी थ्रेड्स के लिए सामान्य होता है और एकाधिक थ्रेड्स द्वारा बार-बार अपडेट किया जाता है।
strictfpक्लासेस, इंटरफेस, मेथड्सफ्लोटिंग-पॉइंट गणनाओं के लिए उपयोग होता है। यह कीवर्ड सुनिश्चित करता है कि आपको हर प्लेटफॉर्म पर समान फ्लोटिंग-पॉइंट प्रस्तुति मिले। यह मॉडिफायर फ्लोटिंग-पॉइंट वेरिएबल को कई प्लेटफॉर्म्स पर अधिक सुसंगत बनाता है।

विस्तृत विवरण

1. static

public class Counter {
    static int count = 0; // क्लास लेवल - सभी इंस्टेंसेस साझा करते हैं
    
    public Counter() {
        count++;
    }
    
    static void printCount() { // static मेथड
        System.out.println("Count: " + count);
    }
}

2. final

public class FinalDemo {
    final int CONSTANT = 10; // फाइनल वेरिएबल
    final void cannotOverride() {} // फाइनल मेथड
}

final class ImmutableClass {} // फाइनल क्लास - एक्सटेंड नहीं कर सकते

3. abstract

abstract class Shape {
    abstract void draw(); // एब्स्ट्रैक्ट मेथड - बॉडी नहीं
    
    void printInfo() { // कंक्रीट मेथड
        System.out.println("I am a shape");
    }
}

class Circle extends Shape {
    @Override
    void draw() { System.out.println("Drawing circle"); }
}

4. synchronized

public class Counter {
    private int count = 0;
    
    // synchronized मेथड - एक समय में एक थ्रेड
    public synchronized void increment() {
        count++;
    }
    
    // synchronized ब्लॉक - फाइन-ग्रेन्ड लॉकिंग
    public void incrementBlock() {
        synchronized(this) {
            count++;
        }
    }
}

5. transient

import java.io.Serializable;

public class User implements Serializable {
    private String username;
    private transient String password; // सीरियलाइज़ नहीं होगा
    private transient Logger logger = Logger.getLogger(); // रनटाइम ऑब्जेक्ट
}

6. volatile

public class SharedFlags {
    private volatile boolean running = true; // सभी थ्रेड्स के लिए विजिबल
    private volatile int counter = 0; // एटॉमिक रीड/राइट
    
    public void stop() { running = false; }
    public void run() { while (running) { counter++; } }
}

7. strictfp

strictfp class Calculator {
    strictfp double calculate(double a, double b) {
        return a * b; // IEEE 754 स्ट्रिक्ट अनुपालन
    }
}

संगतता मैट्रिक्स

मॉडिफायरक्लासइंटरफेसमेथडवेरिएबलकंस्ट्रक्टर
staticनेस्टेड क्लास*नहीं (अंतर्निहित)हांहांनहीं
finalहांहांहांहांनहीं
abstractहांहांहांनहींनहीं
synchronizedनहींनहींहांनहींनहीं
transientनहींनहींनहींहांनहीं
volatileनहींनहींनहींहांनहीं
strictfpहांहांहांनहींनहीं

* केवल नेस्टेड/इनर क्लास के लिए

मॉडिफायर संयोजन (कुछ सामान्य संयोजन)

  • public static final - कॉन्स्टेंट (कन्वेंशन: UPPER_SNAKE_CASE)
  • private static final - प्राइवेट कॉन्स्टेंट
  • public static - यूटिलिटी मेथड/फैक्टरी
  • protected abstract - सबक्लास के लिए टेम्पलेट मेथड
  • static final - कंपाइल-टाइम कॉन्स्टेंट
  • transient volatile - दुर्लभ लेकिन वैध

निष्कर्ष: Java में 7 नॉन-एक्सेस मॉडिफायर्स हैं: static, final, abstract, synchronized, transient, volatile, strictfp। प्रत्येक का विशिष्ट उपयोग मामला है और इन्हें एक्सेस मॉडिफायर्स (public, private, protected, डिफ़ॉल्ट) के साथ जोड़ा जा सकता है।

  1. सुरक्षा कमजोरियां कितनी हैं और उनका आकलन कैसे किया जाता है? सुरक्षा कमजोरियां कितनी हैं और उनका आकलन कैसे किया जाता है?

    हर साल, सुरक्षा और तकनीकी कंपनियां हजारों कमजोरियों का विवरण प्रकाशित करती हैं। मीडिया उन कमजोरियों पर रिपोर्ट करता है, सबसे खतरनाक मुद्दों को उजागर करता है और उपयोगकर्ताओं को सुरक्षित रहने की सलाह देता है। लेकिन क्या हो अगर मैं आपसे कहूं कि उन हजारों कमजोरियों में से कुछ ही वास्तविक दुनिया में सक्र

  1. - पायथन में इनहेरिटेंस के कितने प्रकार हैं?

    इनहेरिटेंस वह अवधारणा है जहां एक क्लास दूसरी क्लास के मेथड्स और प्रॉपर्टीज को एक्सेस करती है। पैरेंट क्लास (बेस/सुपर क्लास): वह क्लास जिससे इनहेरिट किया जाता है चाइल्ड क्लास (डेराइव्ड/सब क्लास): वह क्लास जो इनहेरिट करती है पायथन में इनहेरिटेंस के प्रकार 1. सिंगल इनहेरिटेंस एक चाइल्ड क्लास एक पै

  1. PUBG पर  सर्वर बहुत व्यस्त हैं  त्रुटि को कैसे ठीक करें? PUBG पर 'सर्वर बहुत व्यस्त हैं' त्रुटि को कैसे ठीक करें?

    PUBG (प्लेयर्स अननोन बैटलग्राउंड्स) सबसे लोकप्रिय बैटल-रॉयल गेम्स में से एक है और इस शैली को लोकप्रिय बनाने वाले पहले गेम्स में से एक है। गेम का 50 मिलियन से अधिक लोगों का खिलाड़ी आधार है और डेवलपर्स से नियमित अपडेट प्राप्त होते हैं। हालांकि, हाल ही में, मैच में शामिल होने का प्रयास करते समय सर्वर ब