इस लेख में, आप अमूर्त वर्ग के बारे में और कोटलिन में इसे कैसे लागू करें (उदाहरणों की मदद से) सीखेंगे।
जावा की तरह, 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
कक्षा में घोषित नहीं की गई है )।
अनुशंसित पढ़ना: कोटलिन इंटरफेस
कोटलिन इंटरफेस अमूर्त वर्गों के समान हैं। हालांकि, इंटरफेस राज्य को स्टोर नहीं कर सकते हैं जबकि अमूर्त वर्ग कर सकते हैं।
मतलब, इंटरफ़ेस में संपत्ति हो सकती है लेकिन उसे अमूर्त करने की आवश्यकता है या एक्सेसर कार्यान्वयन प्रदान करना है। जबकि, अमूर्त वर्ग की संपत्ति का सार होना अनिवार्य नहीं है।