Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में Inheritance (इनहेरिटेंस) क्या है?

C# में इनहेरिटेंस (विरासत)

इनहेरिटेंस एक मैकेनिज्म है जहां एक **डेराइव्ड क्लास** (चाइल्ड) **बेस क्लास** (पैरेंट) के मेंबर्स (फील्ड्स, मेथड्स, प्रॉपर्टीज) प्राप्त करती है। यह कोड पुन: उपयोग, एक्सटेंसिबिलिटी और पॉलीमॉर्फिज्म को सक्षम करता है।

मुख्य अवधारणाएं

  • सिंगल इनहेरिटेंस: एक क्लास केवल **एक** बेस क्लास से इनहेरिट कर सकती है।
  • मल्टीपल इंटरफेस इम्प्लीमेंटेशन: एक क्लास कई इंटरफेसेस इम्प्लीमेंट कर सकती है।
  • एक्सेस मॉडिफायर्स: public, protected, internal, protected internal, private protected मेंबर्स इनहेरिट होते हैं; private नहीं।
  • कंस्ट्रक्टर्स इनहेरिट नहीं होते लेकिन डेराइव्ड कंस्ट्रक्टर base() से बेस कंस्ट्रक्टर कॉल करता है।

सिंटैक्स

class DerivedClass : BaseClass {
    // डेराइव्ड क्लास मेंबर्स
}

उदाहरण: Shape बेस क्लास और Rectangle डेराइव्ड क्लास

using System;

namespace InheritanceDemo {
    // बेस क्लास
    class Shape {
        protected int Width;
        protected int Height;
        
        public void SetWidth(int w) => Width = w;
        public void SetHeight(int h) => Height = h;
    }
    
    // डेराइव्ड क्लास
    class Rectangle : Shape {
        public int GetArea() => Width * Height;
    }
    
    class Program {
        static void Main() {
            Rectangle rect = new Rectangle();
            rect.SetWidth(5);
            rect.SetHeight(7);
            
            Console.WriteLine($"Total area: {rect.GetArea()}"); // 35
        }
    }
}

आउटपुट

Total area: 35

महत्वपूर्ण कीवर्ड्स

कीवर्डउपयोग
virtualबेस मेथड जिसे ओवरराइड किया जा सकता है
overrideडेराइव्ड क्लास में नया कार्यान्वयन
abstractबेस क्लास/मेथड जिसे इंस्टेंशिएट/इम्प्लीमेंट करना जरूरी
sealedक्लास को इनहेरिट होने से रोकता है / मेथड को आगे ओवरराइड होने से रोकता है
baseबेस क्लास मेंबर्स एक्सेस करने के लिए
newबेस मेंबर छुपाता है (हाइडिंग), ओवरराइड नहीं

वर्चुअल/ओवरराइड उदाहरण

class Animal {
    public virtual void Speak() => Console.WriteLine("Animal sound");
}

class Dog : Animal {
    public override void Speak() => Console.WriteLine("Bark");
}

class Cat : Animal {
    public override void Speak() => Console.WriteLine("Meow");
}

// उपयोग
Animal a = new Dog();
a.Speak(); // "Bark" - रनटाइम पॉलीमॉर्फिज्म

इनहेरिटेंस के लाभ

  • कोड पुन: उपयोग (DRY सिद्धांत)।
  • पॉलीमॉर्फिज्म सक्षम करता है।
  • हायरार्किकल वर्गीकरण।
  • रखरखाव आसान (बेस में बदलाव सब पर लागू)।
  1. C++ में मल्टीपल इनहेरिटेंस C++ में मल्टीपल इनहेरिटेंस

    मल्टीपल इनहेरिटेंस तब होता है जब कोई क्लास एक से अधिक बेस क्लास से इनहेरिट करती है। इसलिए क्लास मल्टीपल इनहेरिटेंस का उपयोग करके कई बेस क्लासेज से सुविधाएं इनहेरिट कर सकती है। यह C++ जैसी ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषाओं की एक महत्वपूर्ण विशेषता है। मल्टीपल इनहेरिटेंस को प्रदर्शित करने वाला एक

  1. पायथन में इनहेरिटेंस (Inheritance) पायथन में इनहेरिटेंस (Inheritance)

    इस लेख में, हम पायथन 3.x या उससे पहले के संस्करण में इनहेरिटेंस और क्लासेस को एक्सटेंड करने के बारे में जानेंगे।इनहेरिटेंस वास्तविक दुनिया के संबंधों को अच्छी तरह से दर्शाता है, पुन: प्रयोज्यता प्रदान करता है और ट्रांजिटिविटी का समर्थन करता है। यह तेज़ विकास समय, आसान रखरखाव और विस्तार में आसानी प्र

  1. - dry-rb एक्सप्लोर करें: मजबूत, पुन: प्रयोज्य कोड के लिए 18+ रूबी जेम्स

    कुछ नए और दिलचस्प जेम्स आज़माने के लिए ढूंढ रहे हैं? तब dry-rb पर एक नज़र डालें, जेम्स का एक सेट जो सामान्य समस्याओं का समाधान लाता है। Dry-rb 18 से अधिक रूबी जेम्स से बना है जो एक साथ या स्वतंत्र रूप से काम कर सकते हैं। इनमें से कुछ जेम्स शामिल हैं: dry-initializer dry-struct dry-validations dry-e