Kotlin Academy · पाठ

अनाम ऑब्जेक्ट

इनलाइन कार्यान्वयन

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

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

इनलाइन कार्यान्वयन

अनाम ऑब्जेक्ट किसी नई क्लास का नाम दिए बिना किसी क्लास या इंटरफ़ेस का इंस्टेंस बनाता है। object एक्सप्रेशन का उपयोग करें।

interface Greeter { fun greet(): String }

fun main() {
    val g = object : Greeter {
        override fun greet() = "Hi"
    }
    println(g.greet())
}

इंटरफ़ेस का कार्यान्वयन

ऑब्जेक्ट एक्सप्रेशन जहाँ आवश्यकता हो, वहीं एक या अधिक इंटरफ़ेस का कार्यान्वयन कर सकता है।

interface Clickable { fun click() }

fun main() {
    val button = object : Clickable {
        override fun click() = println("Clicked")
    }
    button.click()
}

क्लास के सदस्यों को ओवरराइड करना

आप किसी खुली क्लास की अनाम सबक्लास बना सकते हैं और उसके सदस्यों को ओवरराइड कर सकते हैं।

open class Animal { open fun sound() = "..." }

fun main() {
    val cat = object : Animal() {
        override fun sound() = "Meow"
    }
    println(cat.sound())
}

अतिरिक्त स्थिति रखना

अनाम ऑब्जेक्ट अपने ओवरराइड किए गए सदस्यों के अतिरिक्त अपने गुण भी घोषित कर सकता है।

fun main() {
    val point = object {
        val x = 3
        val y = 4
    }
    println("${point.x}, ${point.y}")
}

सुपरटाइप के बिना ऑब्जेक्ट

यदि आप सुपरटाइप छोड़ देते हैं, तो ऑब्जेक्ट केवल सदस्यों का एक तदर्थ समूह होता है, जो किसी त्वरित स्थानीय समूह के लिए उपयोगी है।

fun main() {
    val config = object {
        val retries = 3
        val timeout = 30
    }
    println(config.retries)
}

स्थानीय वेरिएबल कैप्चर करना

अनाम ऑब्जेक्ट संलग्न स्कोप के वेरिएबल कैप्चर कर सकते हैं, जबकि स्टैटिक नेस्टेड क्लास ऐसा नहीं कर सकतीं।

fun makeCounter(start: Int): () -> Int {
    var count = start
    val obj = object {
        fun next() = count++
    }
    return { obj.next() }
}

fun main() {
    val c = makeCounter(10)
    println(c())
    println(c())
}

श्रोता के रूप में

इसका सामान्य उपयोग किसी इनलाइन कार्यान्वयन को कॉलबैक या श्रोता के रूप में पास करना है।

interface OnDone { fun done(result: Int) }

fun compute(cb: OnDone) {
    cb.done(42)
}

fun main() {
    compute(object : OnDone {
        override fun done(result: Int) = println("Got $result")
    })
}

अनाम ऑब्जेक्ट का प्रकार

जब किसी फ़ंक्शन से लौटाया जाता है, तो अनुमानित प्रकार घोषित सुपरटाइप होता है (या कुछ न होने पर कोई भी प्रकार)। अतिरिक्त सदस्य केवल स्थानीय रूप से दिखाई देते हैं।

interface Named { val name: String }

fun make(): Named = object : Named {
    override val name = "X"
}

fun main() {
    println(make().name)
}

अनाम ऑब्जेक्ट बनाम लैम्ब्डा

एकल-मेथड इंटरफ़ेस के लिए लैम्ब्डा छोटा होता है, लेकिन जब आपको कई सदस्यों को ओवरराइड करना हो या स्थिति रखनी हो, तब अनाम ऑब्जेक्ट आवश्यक होते हैं।

interface Handler {
    fun onStart()
    fun onStop()
}

fun main() {
    val h = object : Handler {
        override fun onStart() = println("start")
        override fun onStop() = println("stop")
    }
    h.onStart()
    h.onStop()
}

ऑब्जेक्ट एक्सप्रेशन बनाम ऑब्जेक्ट घोषणा

ऑब्जेक्ट एक्सप्रेशन हर बार एक नया इंस्टेंस बनाता है। ऑब्जेक्ट घोषणा (object Name {}) एक नामित एकल ऑब्जेक्ट होती है। वे देखने में समान लगते हैं, लेकिन उनका जीवनकाल अलग होता है।

object Singleton { val id = 1 }

fun main() {
    val fresh = object { val id = 2 }
    println(Singleton.id)
    println(fresh.id)
}

एक संक्षिप्त तुलना-कर्ता

अनाम ऑब्जेक्ट एकबारगी तुलना-कर्ताओं या रणनीतियों के लिए उपयोगी होते हैं।

fun main() {
    val cmp = object : Comparator<Int> {
        override fun compare(a: Int, b: Int) = b - a
    }
    val list = listOf(1, 3, 2).sortedWith(cmp)
    println(list)
}

त्वरित जाँच

अनाम ऑब्जेक्ट के बारे में अपनी समझ जाँचें।

पुनरावलोकन

आपने अनाम ऑब्जेक्ट के बारे में सीखा:

  • object : Type {} एक्सप्रेशन एक बिना नाम वाला इंस्टेंस बनाता है।
  • वे इंटरफ़ेस लागू कर सकते हैं, खुली क्लास की सबक्लास बना सकते हैं और स्थिति रख सकते हैं।
  • वे संलग्न स्थानीय वेरिएबल कैप्चर कर सकते हैं।
  • बहु-मेथड कॉलबैक के लिए इनका उपयोग करें; एकल मेथड के लिए लैम्ब्डा को प्राथमिकता दें।
interface Run { fun go() }

fun main() {
    val r = object : Run { override fun go() = println("go") }
    r.go()
}
शुरुआत निःशुल्क

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

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

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

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

क्या “अनाम ऑब्जेक्ट” पाठ निःशुल्क है?

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

“अनाम ऑब्जेक्ट” में मैं क्या सीखूँगा?

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

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

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

“अनाम ऑब्जेक्ट” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. नेस्टेड क्लास
  2. इनर क्लास
  3. अनाम ऑब्जेक्ट
  4. स्थानीय क्लास
← Kotlin Academy पर वापस जाएँ