Kotlin in Hindi – Sealed Classes

  • Introduction to kotlin sealed classes in Hindi
  • Defining kotlin sealed classes in Hindi

Introduction to Kotlin Sealed Classes 

Kotlin में sealed classes language feature है। यह concept java में available नहीं है। Sealed classes restricted type (class) hierarchies को represent करने के लिए use की जाती है।

यदि आपने enum types के बारे में पहले से पढ़ा हुआ है तो आप इसे आसानी से समझ पाएंगे। जब आप एक enum type define करते है तो उसके साथ values का एक set भी define करते है।

इसके बाद जब भी enum type का variable create करते है तब उन्हीं define की गयी values में से कोई एक आप उस variable को assign कर सकते है। Enum type में define की गयी values के set के अलावा आप कोई भी दूसरी value उस variable को assign नहीं कर सकते है।

Limited Types Set for a Value

Sealed classes के साथ भी लगभग enum types जैसा ही है। Sealed class में आप values का set नहीं create करते है बल्कि types (classes) का set create करते है। ऐसा आप sealed classes की subclasses define करके करते है।

Sealed classes बहुत ही उपयोगी होती है। उदाहरण के लिए आपने एक function define किया है। आप चाहते है की इस function में pass की जाने वाली value कुछ निश्चित types में से एक की होनी चाहिए।

ऐसे में आप एक sealed class create कर सकते है और जिन types की value आप function में pass करना चाहते है उन्हें sealed classes की subclass के रूप में define कर सकते है।

इसके बाद आप function में sealed class के object को parameter के रूप में pass कर सकते है और function के अंदर sealed class में define किये गए type set में से कोई भी type use कर सकते है।

यदि आसान शब्दों में कहा जाये तो ऐसी situations जब आप एक value को कुछ निश्चित types की होने के लिए bound करना चाहते हो तो आप sealed classes का प्रयोग कर सकते है।

जिन values को type के रूप में sealed class assign की जाती है उन values का type सिर्फ वे ही classes हो सकती है जो sealed class के अंदर subclasses के रूप में define की गयी है।

Subclasses Must be Declared In The Same File

Sealed classes की subclasses उसी file में declare की जानी चाहिए जिसमें sealed class को define किया गया है। हालाँकि sealed classes की subclasses को inherit करने वाली classes (sealed classes की indirect inheritors) कँही भी define की जा सकती है।

Subclass of Sealed Classes Can Have Many Instances

Sealed classes और enums में एक और महत्वपूर्ण difference होता है। Enum types में define किया गया हर constant एक single instance होता है।

लेकिन sealed classes की subclasses के multiple instances create किये जा सकते है।

Sealed Classes are Abstract 

Sealed classes abstract होती है। इसलिए sealed classes के आप directly instances नहीं create कर सकते है। हालाँकि sealed classes की subclasses के आप कितने भी instances create कर सकते है।

Sealed classes में आप abstract members भी define कर सकते है।

Non-Private Constructor

Sealed classes के लिए आप non-private constructors भी define कर सकते है। By default एक sealed class का constructor private ही होता है।

Using with When Expression

Sealed classes को when expression में भी use किया जा सकता है। जब इन्हें when expression में use करते है तो आपको else part define करने की आवश्यकता नहीं होती है। क्योंकि sealed classes आपको एक when expression के सभी cases cover करने की ability provide करती है। 

Defining Kotlin Sealed Classes

Sealed classes को define करना बहुत ही आसान है। यदि आप कोई abstract members नहीं define कर रहे है तो आप एक single line में ही sealed class को define कर सकते है।

Prefix Sealed Modifier

Sealed class define करने के लिए आप class declaration से पूर्व sealed modifier define करते है। 

<sealed> <class> <sealed-class-Name>

एक sealed class को inherit करने के लिए आप normal classes की ही तरह colon का प्रयोग करते है।

<class> <class-Name> : <sealed-class-Name>:<sealed-class-constructor>()

Example of Sealed Classes

sealed class Expr
data class Const(val number: Double):Expr()
data class Sum(val e1: Expr, val e2: Expr): Expr()
object NotANumber: Expr()
fun eval(expr: Expr): Double = when(expr){
is Const ->expr.number
is Sum -> eval(expr.e1)+eval(expr.e2)
NotANumber -> Double.NaN
}

Previous: Kotlin Interfaces
Next: Kotlin Nested and Inner Classes