कोटलिन सार वर्ग और सार सदस्य

इस लेख में, आप अमूर्त वर्ग के बारे में और कोटलिन में इसे कैसे लागू करें (उदाहरणों की मदद से) सीखेंगे।

जावा की तरह, abstractकीवर्ड का उपयोग कोटलिन में अमूर्त कक्षाओं को घोषित करने के लिए किया जाता है। एक सार वर्ग को तत्काल नहीं किया जा सकता है (आप एक सार वर्ग की वस्तुएं नहीं बना सकते हैं)। हालाँकि, आप उनसे उपवर्ग प्राप्त कर सकते हैं।

एक अमूर्त वर्ग के सदस्य (गुण और तरीके) गैर-सार होते हैं जब तक कि आप abstractउन्हें सार बनाने के लिए कीवर्ड का उपयोग नहीं करते हैं । आइए एक उदाहरण लेते हैं:

 अमूर्त वर्ग व्यक्ति (var आयु: Int = 40 मजेदार डिस्प्लेएसएसएन (ssn: Int)

यहाँ,

  • एक अमूर्त वर्ग Personबनाया जाता है। आप वर्ग की वस्तुएँ नहीं बना सकते।
  • वर्ग में एक गैर-अमूर्त संपत्ति की आयु और एक गैर-सार पद्धति है displaySSN()। यदि आपको इन सदस्यों को उपवर्ग में ओवरराइड करने की आवश्यकता है, तो उन्हें openकीवर्ड के साथ चिह्नित किया जाना चाहिए ।
  • कक्षा में एक सार पद्धति है displayJob()। इसका कोई क्रियान्वयन नहीं है और इसे अपने उपवर्गों में ओवरराइड किया जाना चाहिए।

नोट: सार वर्ग हमेशा खुले होते हैं। openइनसे उपवर्गों को प्राप्त करने के लिए आपको कीवर्ड का स्पष्ट रूप से उपयोग करने की आवश्यकता नहीं है।

उदाहरण: कोटलिन सार वर्ग और विधि

 abstract class Person(name: String) ( init ( println("My name is $name.") ) fun displaySSN(ssn: Int) ( println("My SSN is $ssn.") ) abstract fun displayJob(description: String) ) class Teacher(name: String): Person(name) ( override fun displayJob(description: String) ( println(description) ) ) fun main(args: Array) ( val jack = Teacher("Jack Smith") jack.displayJob("I'm a mathematics teacher.") jack.displaySSN(23123) )

जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:

मेरा नाम जैक स्मिथ है। मैं गणित का शिक्षक हूं। मेरा SSN 23123 है।

यहाँ, एक वर्ग Teacherएक अमूर्त वर्ग से लिया गया है Person

शिक्षक वर्ग का एक ऑब्जेक्ट जैक त्वरित है। हम "Jack Smith"इसे बनाते समय प्राथमिक निर्माता के लिए एक पैरामीटर के रूप में पारित कर चुके हैं । यह Personवर्ग के इनिशलाइज़र ब्लॉक को निष्पादित करता है ।

फिर, displayJob()जैक ऑब्जेक्ट का उपयोग करके विधि को कहा जाता है। ध्यान दें, कि displayJob()विधि को आधार वर्ग में सार घोषित किया गया है, और व्युत्पन्न वर्ग में ओवरराइड किया गया है।

अंत में, displaySSN()जैक ऑब्जेक्ट का उपयोग करके विधि को कहा जाता है। विधि गैर-सार है और व्यक्ति वर्ग में घोषित की गई है (और Teacherकक्षा में घोषित नहीं की गई है )।

अनुशंसित पढ़ना: कोटलिन इंटरफेस

कोटलिन इंटरफेस अमूर्त वर्गों के समान हैं। हालांकि, इंटरफेस राज्य को स्टोर नहीं कर सकते हैं जबकि अमूर्त वर्ग कर सकते हैं।

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

दिलचस्प लेख...