Java Academy · पाठ

Sealed प्रकार घोषित करना

कौन-सा प्रकार विस्तार पा सकता है, इसे सीमित करें

पाठ 1, कुल 4 में से13 चरण

Sealed प्रकार घोषित करना, CoddyKit पर Java Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Java Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

सीलबंद प्रकार क्या होते हैं

एक सीलबंद क्लास या इंटरफ़ेस यह सीमित करता है कि कौन से अन्य प्रकार उसका विस्तार कर सकते हैं या उसे लागू कर सकते हैं। इससे आप संभावनाओं के एक बंद समूह का मॉडल बना सकते हैं, जिसे कंपाइलर समझ और जाँच सकता है।

यह किस समस्या का समाधान करता है

एक सामान्य public क्लास को कोई भी व्यक्ति, कहीं से भी, उपक्लास बना सकता है। कभी-कभी आप ठीक तीन आकृतियाँ या भुगतान के दो प्रकार चाहते हैं, जिनमें कोई अप्रत्याशित विकल्प न हो। सीलबंदी इस उद्देश्य को स्पष्ट और अनिवार्य बनाती है।

sealed कीवर्ड

किसी प्रकार को sealed चिह्नित करें और permits के साथ उसके अनुमत उपप्रकारों की सूची दें। प्रत्येक अनुमत उपप्रकार को अपना विरासत संशोधक घोषित करना होगा।

public class Main {
    sealed interface Shape permits Circle, Square {}
    record Circle(double radius) implements Shape {}
    record Square(double side) implements Shape {}

    public static void main(String[] args) {
        Shape s = new Circle(2.0);
        System.out.println(s);
    }
}

उपप्रकार संशोधक

प्रत्येक अनुमत उपप्रकार इनमें से एक होना चाहिए: final (आगे कोई उपक्लास नहीं), sealed (प्रतिबंध जारी रहता है), या non-sealed (स्वतंत्र विस्तार के लिए फिर से खोल देता है)। रिकॉर्ड स्वतः final होते हैं।

एक अंतिम उपक्लास

किसी उपक्लास को final चिह्नित करने से उस शाखा पर पदानुक्रम समाप्त हो जाता है।

public class Main {
    sealed interface Animal permits Dog, Cat {}
    static final class Dog implements Animal {
        public String toString() { return "Dog"; }
    }
    static final class Cat implements Animal {
        public String toString() { return "Cat"; }
    }

    public static void main(String[] args) {
        Animal a = new Dog();
        System.out.println(a);
    }
}

एक गैर-सीलबंद उपक्लास

non-sealed उपप्रकार जानबूझकर विस्तार की अनुमति फिर से देता है, जिससे अज्ञात क्लास भी उसका विस्तार कर सकती हैं। जब किसी एक शाखा को खुला रखना आवश्यक हो, तभी इसका सीमित उपयोग करें।

public class Main {
    sealed interface Plugin permits CorePlugin, ExternalPlugin {}
    static final class CorePlugin implements Plugin {}
    static non-sealed class ExternalPlugin implements Plugin {}
    static class ThirdParty extends ExternalPlugin {}

    public static void main(String[] args) {
        Plugin p = new ThirdParty();
        System.out.println(p.getClass().getSimpleName());
    }
}

सीलबंद क्लास भी

सीलबंदी केवल इंटरफ़ेस तक सीमित नहीं है। एक अमूर्त sealed class भी इसी तरह काम करती है और साझा स्थिति तथा व्यवहार रख सकती है।

public class Main {
    sealed static abstract class Expr permits Num, Add {}
    static final class Num extends Expr {
        final int value;
        Num(int value) { this.value = value; }
    }
    static final class Add extends Expr {
        final Expr left, right;
        Add(Expr left, Expr right) { this.left = left; this.right = right; }
    }

    public static void main(String[] args) {
        Expr e = new Add(new Num(1), new Num(2));
        System.out.println(e.getClass().getSimpleName());
    }
}

एक ही मॉड्यूल या पैकेज

अनुमत उपप्रकार सीलबंद प्रकार वाले ही मॉड्यूल में होने चाहिए, या यदि कोड मॉड्यूलर नहीं है तो उसी पैकेज में। इससे बंद समूह एक साथ और सत्यापित करने योग्य रहता है।

कंपाइलर द्वारा प्रवर्तन

यदि कोई क्लास permits में सूचीबद्ध हुए बिना किसी सीलबंद प्रकार का विस्तार करने का प्रयास करती है, तो कोड संकलित नहीं होता। बंद समूह की गारंटी संकलन के समय ही मिल जाती है।

यह क्यों महत्वपूर्ण है

क्योंकि कंपाइलर को प्रत्येक उपप्रकार का पता होता है, वह यह जाँच सकता है कि सीलबंद प्रकार पर किया गया switch सभी मामलों को सँभालता है। यही पूर्ण पैटर्न मिलान का आधार है, जिसे बाद के पाठ्यक्रम में शामिल किया गया है।

एक पूर्ण पदानुक्रम

यहाँ मानों के मॉडल के रूप में उपयोग किया गया एक छोटा बंद पदानुक्रम दिया गया है।

public class Main {
    sealed interface Json permits JsonNull, JsonNumber, JsonString {}
    record JsonNull() implements Json {}
    record JsonNumber(double value) implements Json {}
    record JsonString(String value) implements Json {}

    public static void main(String[] args) {
        Json[] values = { new JsonNull(), new JsonNumber(3.5), new JsonString("hi") };
        for (Json j : values) {
            System.out.println(j);
        }
    }
}

त्वरित जाँच

सीलबंद घोषणाओं की अपनी समझ जाँचिए।

पुनरावलोकन

आपने सीलबंद प्रकार घोषित करना सीखा।

  • sealed यह सीमित करता है कि कौन किसी प्रकार का विस्तार या कार्यान्वयन कर सकता है।
  • permits खंड अनुमत उपप्रकारों की सूची देता है।
  • प्रत्येक उपप्रकार final, sealed, या non-sealed होना चाहिए।
  • उपप्रकार उसी मॉड्यूल या पैकेज में रहते हैं और कंपाइलर इस नियम को लागू करता है।
शुरुआत निःशुल्क

एआई शिक्षक के साथ Java सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
104
पाठ
374

अक्सर पूछे जाने वाले प्रश्न

क्या “Sealed प्रकार घोषित करना” पाठ निःशुल्क है?

हाँ—“Sealed प्रकार घोषित करना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Java Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Sealed प्रकार घोषित करना” में मैं क्या सीखूँगा?

कौन-सा प्रकार विस्तार पा सकता है, इसे सीमित करें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Java Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Java Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Java Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।

“Sealed प्रकार घोषित करना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Java Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Java Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Sealed प्रकार घोषित करना
  2. permits क्लॉज़
  3. Records के साथ Sealed प्रकार
  4. Sealed प्रकारों पर संपूर्ण switch
← Java Academy पर वापस जाएँ