Kotlin in Hindi : Class Inheritance

  • Introduction to kotlin class inheritance in Hindi
  • Overriding kotlin class methods in Hindi
  • Overriding kotlin class properties in Hindi

Introduction to Kotlin Class Inheritance

Inheritance object oriented programming का एक बहुत ही महत्वपूर्ण feature है। इससे आपके द्वारा लिखे गए code की reusability बढ़ जाती है। यदि आप java में inheritance के बारे में पढ़ चुके है तो kotlin में भी inheritanace लगभग समान ही है।

Use Members of a Class in Another Class

Inheritance एक ऐसा mechanism है जिसके द्वारा आप किसी class के अंदर पहले से define किए गए members (properties, methods आदि) को किसी दूसरी class में use कर सकते है। इसके लिए आपको उस class को inherit करना होता है जिसके members को आप current class में use करना चाहते है। 

Super Class & Sub Class

Inheritance mechanism में जिस class को inherit किया जाता है, यानी जिस class के members को use किया जाता है वह super class या base class कहलाती है और जो class inherit करती है यानि जो class दूसरे class के members को use करती है sub class या derived class कहलाती है।

Subclass Can Also Define Its Own Members

Sub class super class के members को use करने के अलावा स्वयं के members भी define कर सकती है। उदाहरण के लिए यदि super class में कोई property define की गयी है तो sub class उसे display करने के लिए एक method define कर सकती है।

A Class is By Default Final

Kotlin में एक class और उसके members by default final होते है। यदि आपने java में programming की होगी तो आपको पता होगा की एक final class को inherit नहीं किया जा सकता है। 

इसलिए जिस भी class को आप inherit करना चाहते है उसे पहले open modifier द्वारा annotate किया जाता है। इसके बाद ही उसे inherit किया जा सकता है। 

<open> <class> <class-Class-Name> <constructor>(parameters)
{
    //
}

Use Colon with Class Name to Inherit

Kotlin में किसी class को inherit करने के लिए subclass की header के बाद colon लगाकर superclass का नाम define किया जाता है।

open <class> <class-Name> : <super-Class-Name>
{
    //use super-class members
    //define sub class members
}

All Kotlin Classes Inherit Any

सभी kotlin classes Any class से inherited होती है। यानि की kotlin में सभी classes की Any एक common superclass है। यह class 3 प्रमुख methods को define करती है। 

  • equals()
  • hashCode()
  • toString()

If Subclass Has Primary Constructor

किसी class को inherit करते समय यदि subclass primary constructor define करती है तो base class को उसके parameters को use करते हुए वँही पर initialize किया जाना चाहिए। 

open <class> <super-Class-Name> <constructor>(parameters)
{
 
}

<class> <sub-Class-Name> <constructor>(base-class-parameters): <super-Class-Name>(base-class-parameters)
{

}

If Subclass Has No Primary Constructor

यदि subclass primary constructor नहीं define करती है तो उस situation में हर secondary constructor द्वारा super keyword को use करते हुए base type को initialize किया जाना चाहिए। यदि कोई constructor ऐसा नहीं करता है तो वह किसी दूसरे constructor को भी delegate कर सकता है जो base type को initialize करता है। 

class <class-Name> : <base-Class-Name>
{
     constructor(parameters):super(parameters)
}

इस प्रकार आप अलग अलग secondary constructors के द्वारा base class के अलग अलग constructors को call कर सकते है। 

Overriding Class Properties

यह आवश्यक नहीं है की super class में define की गयी property की value base class में useful हो। इसलिए base class में property को redeclare किया जाता है।

जब आप किसी super class में define की गयी property को sub class में redeclare करते है तो वह process property overriding कहलाती है।

Annotate With open Modifier in Super-Class

जब आप किसी property को sub class में override करना चाहते है तो उसे super-class में open modifier के साथ define करते है। ऐसा इसलिए किया जाता है क्योंकि class की ही तरह उसके members भी by default final रहते है। Class members को आप directly नहीं override कर सकते है 

open var <property-Name> <:> <data-Type>

Preface With override Keyword in Sub-Class

जब आप sub class में किसी property को override करते है तो property को redeclare करने से पूर्व override keyword define किया जाता है। इस keyword से पता चलता है की superclass में define की गयी किसी property को override कर रहे है।

override var <property-Name> <:> <data-Type>

Must Have a Compatible Type

Override करते समय property का type super-class के declaration type से compatible होना चाहिए। यदि ऐसा नहीं है तो आप उस property को override नहीं कर सकते है। 

Cannot Override var With val

एक val property को var property द्वारा override किया जा सकता है। क्योंकि val property में पहले से ही एक getter method होता है और उसे var के रूप में override करके उसमे setter method और define किया जा सकता है।

लेकिन आप एक var property को val property द्वारा override नहीं कर सकते है। यानी की आप एक changeable property को read-only नहीं redeclare कर सकते है।

Use override Keyword in Primary Constructor

आप primary constructor में भी override keyword को define करके property को override कर सकते है। 

class myClass
{
   var Num: Int
}

class myOtherClass(override var Num: Int) : myClass
{
  // Initialize num property here
}

Overriding Class Methods

Properties की ही तरह आप super class के methods को भी subclass में override कर सकते है। इसके लिए यह आवश्यक है की method जिसे आप override करना चाहते है open modifier के साथ define किया गया हो।

open class superClass
{
        open fun superFun()
        {
              //some code here
        }
}

class subClass : superClass
{
  //some code here

//override fun superFun()
  {
       //some other code here
 }

}

Subclass में override करते समय आप override keyword के साथ method को define करते है। यह बिलकुल property को override करने जैसा ही है।

Previous: Kotlin Properties
Next: Kotlin Visibility Modifiers