खोज…


परिचय

किसी भी ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग लैंग्वेज में क्लास इनहेरिटेंस का कुछ रूप है। मुझे संशोधित करें:

कल्पना कीजिए कि आपको फल का एक गुच्छा प्रोग्राम करना था: Apples , Oranges और Pears । वे सभी आकार, आकार और रंग में भिन्न हैं, यही कारण है कि हमारे पास अलग-अलग कक्षाएं हैं।

लेकिन हम कहते हैं कि उनके मतभेद एक दूसरे के लिए मायने नहीं रखते हैं और आप सिर्फ एक Fruit चाहते हैं, कोई फर्क नहीं पड़ता जो वास्तव में है? क्या रिटर्न प्रकार getFruit() है?

इसका जवाब है क्लास Fruit । हम एक नया वर्ग बनाते हैं और उससे सभी फल प्राप्त करते हैं!

वाक्य - विन्यास

  • खुला {बेस क्लास}
  • वर्ग {व्युत्पन्न वर्ग}: {आधार वर्ग} ({प्रवेश तर्क})
  • ओवरराइड {फ़ंक्शन परिभाषा}
  • {DC-Object} {Base Class} == सच है

पैरामीटर

पैरामीटर विवरण
बेस क्लास वह वर्ग जो विरासत में मिला है
व्युत्पन्न वर्ग बेस क्लास से विरासत में मिली क्लास
Init Arguments बेस क्लास के कंस्ट्रक्टर को तर्क दिए गए
कार्य की परिभाषा बेस क्लास में समान कोड की तुलना में व्युत्पन्न वर्ग में फ़ंक्शन
डीसी वस्तु "व्युत्पन्न वर्ग-वस्तु" वस्तु जिसमें व्युत्पन्न वर्ग का प्रकार होता है

मूल बातें: 'खुला' कीवर्ड

कोटलिन में, कक्षाएं डिफ़ॉल्ट रूप से अंतिम होती हैं जिसका अर्थ है कि उन्हें विरासत में नहीं दिया जा सकता है।

किसी वर्ग पर वंशानुक्रम की अनुमति देने के लिए, open कीवर्ड का उपयोग करें।

open class Thing {
    // I can now be extended!
}

नोट: अमूर्त कक्षाएं, सीलबंद कक्षाएं और इंटरफेस डिफ़ॉल्ट रूप से open रहेंगे।

एक वर्ग से खेतों को इनहेरिट करना

आधार वर्ग को परिभाषित करना:

open class BaseClass {
    val x = 10
}

व्युत्पन्न वर्ग को परिभाषित करना:

class DerivedClass: BaseClass() {
    fun foo() {
        println("x is equal to " + x)
    }
}

उपवर्ग का उपयोग करना:

fun main(args: Array<String>) {
    val derivedClass = DerivedClass()
    derivedClass.foo() // prints: 'x is equal to 10'
}

एक कक्षा से इनहेरिट करने के तरीके

आधार वर्ग को परिभाषित करना:

open class Person {
    fun jump() {
        println("Jumping...")
    }
}

व्युत्पन्न वर्ग को परिभाषित करना:

class Ninja: Person() {
    fun sneak() {
        println("Sneaking around...")
    }
}

निनजा व्यक्ति की सभी विधियों तक पहुँच रखता है

fun main(args: Array<String>) {
    val ninja = Ninja()
    ninja.jump()  // prints: 'Jumping...'
    ninja.sneak() // prints: 'Sneaking around...'
}

ओवरराइडिंग गुण और विधियाँ

ओवरराइडिंग गुण (केवल पढ़ने योग्य और परिवर्तनशील):

abstract class Car {
    abstract val name: String;
    open var speed: Int = 0;
}

class BrokenCar(override val name: String) : Car() {
    override var speed: Int
        get() = 0
        set(value) {
            throw UnsupportedOperationException("The car is bloken")
        }
}

fun main(args: Array<String>) {
    val car: Car = BrokenCar("Lada")
    car.speed = 10
}

ओवरराइड करने के तरीके:

interface Ship {
    fun sail()
    fun sink()
}

object Titanic : Ship {

    var canSail = true

    override fun sail() {
        sink()
    }

    override fun sink() {
        canSail = false
    }
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow