जावा में, आप निम्न कार्य कर सकते हैं:
class MyClass extends SuperClass implements MyInterface, ...
क्या कोटलिन में भी ऐसा ही करना संभव है? मान SuperClassलेना अमूर्त है और लागू नहीं होता हैMyInterface
जवाबों:
इंटरफ़ेस कार्यान्वयन और वर्ग विरासत के बीच कोई वाक्यात्मक अंतर नहीं है । :यहाँ दिखाए गए अनुसार एक बृहदान्त्र के बाद सभी प्रकार के अल्पविरामों को अलग करें:
abstract class MySuperClass
interface MyInterface
class MyClass : MySuperClass(), MyInterface, Serializable
एकाधिक वर्ग वंशानुक्रम निषिद्ध है जबकि एक ही वर्ग द्वारा कई इंटरफेस लागू किए जा सकते हैं।
यह तब उपयोग किया जाने वाला सामान्य वाक्य-विन्यास होता है जब एक वर्ग (दूसरी कक्षा) का विस्तार हो रहा हो या लागू हो रहा हो (एक या सर्वर इंटरफेस):
class Child: InterfaceA, InterfaceB, Parent(), InterfaceZ
ध्यान दें कि कक्षाएं और इंटरफेस का क्रम मायने नहीं रखता है।
इसके अलावा, ध्यान दें कि जिस क्लास को बढ़ाया गया है, हम कोष्ठक का उपयोग करते हैं, आपको कोष्ठक मूल वर्ग के मुख्य निर्माता को संदर्भित करता है। इसलिए, यदि मूल वर्ग का मुख्य निर्माता तर्क लेता है, तो बाल वर्ग को भी उस तर्क को पारित करना चाहिए।
interface InterfaceX {
fun test(): String
}
open class Parent(val name:String) {
//...
}
class Child(val toyName:String) : InterfaceX, Parent("dummyName"){
override fun test(): String {
TODO("Not yet implemented")
}
}