Kotlin in Hindi : Nested and Inner Classes

  • Introduction to kotlin nested classes in Hindi
  • Creating kotlin inner classes in Hindi 
  • Kotlin anonymous inner classes in Hindi

Introduction to Kotlin Nested Classes

Kotlin आपको एक class के अंदर दूसरी class create करने की ability provide करती है। ऐसी classes जो दूसरी classes के अंदर create की जाती है nested classes कहलाती है।

class outerClass     //Outer Class
{
       //Members of outerclass

       class nestedClass       //Nested Class
       {
              //Members of nested class
       }
}

Can Not Access Members of Outer Class

हालाँकि nested classes दूसरी class के अंदर define की जाती है लेकिन ये उस class से independent होती है। उदाहरण के लिए एक nested class के अंदर आप outer class के members (properties, functions) को access नहीं कर सकते है।

class outerClass
{
    var age: Int = 90

    class nestedClass
    {
          println(age)   //Wrong, Can not access outer class member in nested class
    }
}

एक nested class के members को access करने के लिए objects का प्रयोग नहीं किया जाता है। बल्कि outer class के नाम के द्वारा ही nested class के members को access किया जाता है।

class outerClass    //Outer Class
{
    class nestedClass     //Nested Class
    {
         fun printMessage()
         {
             println(“Hello reader, You are learning about kotlin nested classes.”)
         }
    }
}

fun main(args: Array<String>)
{
    outerClass().nestedClass().printMessage() //Access nested class member
}

Kotlin Inner Classes

Kotlin आपको inner classes define करने की भी ability provide करती है। कई बार programmers nested और inner classes के बीच confuse हो जाते है क्योंकि nested classes की ही तरह inner classes भी किसी दूसरी class के अंदर define की जाती है।

लेकिन ऐसा बिलकुल भी नहीं nested और inner classes में कई महत्वपूर्ण differences पाए जाते है।

Defined Using inner Keyword

Kotlin में inner classes को define करने के लिए class declaration से पूर्व inner keyword prefix करने की आवश्यकता होती है।

class outerClass    //outer class
{

    //members of outer class 

    inner myInnerClass    //inner class defined using inner keyword
    {
          //members of inner class
    }
}

Access Members of Outer Class 

Kotlin nested classes और inner classes के बीच जो दूसरा महत्वपूर्ण difference है वह यह है की आप एक inner class के अंदर outer class के members को access कर सकते है। लेकिन एक nested class में उसकी outer class के members को access करना possible नहीं होता है।

class outerClass        //outer class
{
      //members of outer class

     inner class myInnerClass   //inner class
     {
          //members of inner class
         //Access members of outer class here
     }
}

एक Inner class के members को access करने के लिए आप उसके object create नहीं करते है बल्कि inner class के members को भी nested class के members की ही तरह outer class के नाम के साथ access किया जा सकता है।

class outerClass
{
     var message: String = “Hello Reader”
 
    inner class myInnerClass
    {
         fun display()
         {
             println(message)
         }
    }
}

fun main(args: Array<String>)
{
    outerClass.myInnerClass.display()
}

Carry a Reference to An Object of Outer Class

Inner classes के बारे में एक और महत्वपूर्ण बात यह है की एक inner class outer class के object का reference hold करती है। 

Kotlin Anonymous Inner Classes

कई बार कुछ ऐसे interfaces होते है जिनमें एक ही method होता है लेकिन उन्हें implement करना अनिवार्य होता है। ऐसे interfaces को java में functional interfaces कहा जाता है।

एक functional interface को implement करने के लिए आप class के अंदर उसके method की definition provide करते है। क्योंकि एक interface का object create करके आप उसके members को access नहीं कर सकते है। 

Kotlin आपको anonymous inner class का concept provide करती है। Anonymous inner class को object expression के माध्यम से create किया जाता है।

Anonymous class के द्वारा आप एक functional interface को anonymously implement कर सकते है। 

interface myInterface     //Functional Interface
{
     fun printMessage()
}

fun main(args: Array<String>)
{
    var obj : myInterface = Object : MyInterface    //Anonymous Inner Class
    {
         override fun printMessage()
         {
              println(“Hello Reader from Anonymous Inner Class”)
         }
    }
}

Previous: Kotlin Sealed Classes
Next: Kotlin Enum Classes