Kotlin Academy · पाठ

sealed class बनाम sealed interface: किसका उपयोग कब करें

Kotlin में sealed classes और interfaces के बीच अंतर समझें।

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

sealed class बनाम sealed interface: किसका उपयोग कब करें, CoddyKit पर Kotlin Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Kotlin Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Kotlin Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

Kotlin में सीलबंद प्रकार

सीलबंद वर्ग और इंटरफ़ेस वर्ग-पदानुक्रम को ज्ञात उपप्रकारों के एक निश्चित समूह तक सीमित करते हैं और पूर्ण when अभिव्यक्तियों को संभव बनाते हैं।

सीलबंद वर्ग की मूल बातें

सीलबंद वर्ग उपवर्ग बनाने की अनुमति उसी पैकेज (Kotlin 1.5+) या उसी फ़ाइल तक सीमित करता है।
sealed class Shape
class Circle(val radius: Double) : Shape()
class Rectangle(val w: Double, val h: Double) : Shape()
object Unknown : Shape()

सीलबंद इंटरफ़ेस: अधिक लचीलापन

सीलबंद इंटरफ़ेस उपप्रकारों को एक साथ दूसरे वर्गों का विस्तार करने और दूसरे इंटरफ़ेस लागू करने की अनुमति देता है — सीलबंद वर्ग ऐसा नहीं कर सकता।
sealed interface Result<out T>
data class Success<T>(val value: T) : Result<T>
data class Error(val ex: Exception) : Result<Nothing>

मुख्य अंतर

सीलबंद वर्ग: उपवर्गों में निर्माता और स्थिति हो सकती है। सीलबंद इंटरफ़ेस: उपप्रकार किसी भी वर्ग का विस्तार कर सकते हैं। अधिक लचीलेपन की आवश्यकता हो तो सीलबंद इंटरफ़ेस का उपयोग करें।
// sealed class subtype extends another class:
sealed interface Command
class MoveCommand(val dx: Int, val dy: Int) : Command, Serializable
class ResizeCommand(val scale: Double) : Command, Cloneable

पूर्ण when: else आवश्यक नहीं

जब सभी सीलबंद उपप्रकार शामिल कर लिए जाते हैं, तब when अभिव्यक्ति पूर्ण होती है — else आवश्यक नहीं होता और कंपाइलर पूर्णता लागू करता है।
fun area(shape: Shape): Double = when (shape) {
    is Circle -> Math.PI * shape.radius * shape.radius
    is Rectangle -> shape.w * shape.h
}  // no 'else' — compiler guarantees completeness

उपप्रकार जोड़ने पर मौजूदा when टूट जाता है

नया सीलबंद उपप्रकार जोड़ने पर मौजूदा when अभिव्यक्तियाँ तब तक कंपाइल नहीं होंगी, जब तक उन्हें अपडेट न किया जाए। यही इसका मुख्य लाभ है।
// Add Triangle to Shape:
class Triangle(val base: Double, val height: Double) : Shape()
// Now the area() function above won't compile until
// a Triangle branch is added — safety net!

साझा गुणों वाले सीलबंद वर्ग

साझा गुणों को सीलबंद वर्ग में घोषित करें।
sealed class NetworkResult {
    abstract val timestamp: Long
}
data class SuccessResult(val data: String, override val timestamp: Long) : NetworkResult()
data class FailureResult(val error: String, override val timestamp: Long) : NetworkResult()

नेस्टेड सीलबंद प्रकार

सीलबंद उपप्रकार स्वयं भी सीलबंद हो सकते हैं, जिससे बहु-स्तरीय पदानुक्रम बनाए जा सकते हैं।
sealed interface UiState
object Loading : UiState
sealed interface Loaded : UiState
data class Content(val items: List<String>) : Loaded
data class Empty(val hint: String) : Loaded
data class Failure(val error: String) : UiState

बिना-स्थिति वाले वैरिएंट के लिए object उपप्रकार

ऐसे सीलबंद उपप्रकारों के लिए object का उपयोग करें जिनमें कोई स्थिति न हो।
sealed class Direction
object North : Direction()
object South : Direction()
object East : Direction()
object West : Direction()

fun move(d: Direction) = when (d) {
    North -> y++
    South -> y--
    East -> x++
    West -> x--
}

सीलबंद + डेटा वर्ग + object साथ-साथ

सीलबंद प्रकार के अंतर्गत डेटा वर्ग (स्थिति वाले उपप्रकारों के लिए) और object (एकल उदाहरणों के लिए) को मिलाएँ।
sealed class LoadState
object Idle : LoadState()
object Loading : LoadState()
data class Success(val count: Int) : LoadState()
data class Error(val msg: String) : LoadState()

सीलबंद वर्ग बनाम इंटरफ़ेस कब चुनें

सीलबंद वर्ग का उपयोग तब करें जब सभी उपप्रकारों में साझा स्थिति हो। सीलबंद इंटरफ़ेस का उपयोग तब करें जब उपप्रकारों को अलग-अलग आधार वर्गों का विस्तार करना हो या दूसरे इंटरफ़ेस लागू करने हों।

त्वरित जाँच

सीलबंद वर्ग की तुलना में सीलबंद इंटरफ़ेस का क्या लाभ है?

पुनरावलोकन

सीलबंद वर्ग/इंटरफ़ेस पदानुक्रम को ज्ञात प्रकारों तक सीमित करता है। सीलबंद प्रकार पर when पूर्ण होता है — else आवश्यक नहीं होता। सीलबंद इंटरफ़ेस उपप्रकारों को दूसरे वर्गों का विस्तार करने देता है। स्थिति वाले उपप्रकारों के लिए डेटा वर्ग और बिना स्थिति वाले उपप्रकारों के लिए object का उपयोग करें।
शुरुआत निःशुल्क

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

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

पाठ्यक्रम
51
पाठ
203

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

क्या “sealed class बनाम sealed interface: किसका उपयोग कब करें” पाठ निःशुल्क है?

हाँ — Kotlin Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “sealed class बनाम sealed interface: किसका उपयोग कब करें” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Kotlin Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“sealed class बनाम sealed interface: किसका उपयोग कब करें” में मैं क्या सीखूँगा?

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

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

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

“sealed class बनाम sealed interface: किसका उपयोग कब करें” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. sealed class बनाम sealed interface: किसका उपयोग कब करें
  2. Sealed Hierarchies के साथ Exhaustive when
  3. Sealed Classes से UI State का Modeling
  4. Sealed Hierarchies को Nest और Combine करना
← Kotlin Academy पर वापस जाएँ