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

C# में एब्स्ट्रैक्ट क्लास बनाम इंटरफेस: अंतर


दोनों "कॉन्ट्रैक्ट" परिभाषित करते हैं, लेकिन अलग-अलग उद्देश्यों के लिए।

तुलना तालिका

विशेषताएब्स्ट्रैक्ट क्लासइंटरफेस
विरासतकेवल एक (सिंगल इनहेरिटेंस)एकाधिक (मल्टीपल इम्प्लीमेंटेशन)
मेंबर फील्ड्सहाँ (इंस्टेंस/स्टैटिक फील्ड्स)नहीं (केवल C# 8.0+ में डिफ़ॉल्ट इम्प्लीमेंटेशन)
एक्सेस मॉडिफायर्ससभी (public, private, protected, internal)डिफ़ॉल्ट public (C# 8.0 से पहले), अब private/protected भी
कंस्ट्रक्टरहाँनहीं
इंस्टेंस बनानानहीं (लेकिन डेराइव्ड बना सकता है)नहीं
उद्देश्य"Is-A" बेस क्लास, साझा कोड"Can-Do" कॉन्ट्रैक्ट, पॉलीमॉर्फिज़्म

एब्स्ट्रैक्ट क्लास उदाहरण

public abstract class Animal
{
    public string Name { get; set; }  // फील्ड/प्रॉपर्टी
    public abstract void MakeSound(); // एब्स्ट्रैक्ट मेथड
    public void Sleep() => Console.WriteLine("Sleeping..."); // कार्यान्वयन
}

public class Dog : Animal
{
    public override void MakeSound() => Console.WriteLine("Woof!");
}

इंटरफेस उदाहरण

public interface IAnimal
{
    string Name { get; set; }
    void MakeSound();
}

public interface IRunnable
{
    void Run();
}

// एकाधिक इम्प्लीमेंटेशन
public class Dog : IAnimal, IRunnable
{
    public string Name { get; set; }
    public void MakeSound() => Console.WriteLine("Woof!");
    public void Run() => Console.WriteLine("Running...");
}

C# 8.0+ नया: डिफ़ॉल्ट इम्प्लीमेंटेशन

public interface ILogger
{
    void Log(string msg);
    void LogError(string msg) => Log($"ERROR: {msg}"); // डिफ़ॉल्ट इम्प्लीमेंटेशन
}

कब क्या चुनें?

  • एब्स्ट्रैक्ट क्लास: निकटता से संबंधित क्लासेस, साझा कोड/स्टेट, वर्जनिंग (नए मेथड्स जोड़ने पर डेराइव्ड क्लासेस नहीं टूटतीं)।
  • इंटरफेस: असंबंधित क्लासेस के लिए कॉन्ट्रैक्ट, मल्टीपल इम्प्लीमेंटेशन, DI/मॉकिंग, प्लगइन आर्किटेक्चर।
  1. - Java में Interface और Class में अंतर

    Classएक क्लास एक ब्लूप्रिंट है जिससे व्यक्तिगत ऑब्जेक्ट्स बनाए जाते हैं। एक क्लास में निम्नलिखित वेरिएबल प्रकारों में से कोई भी हो सकता है।लोकल वेरिएबल्स − मेथड्स, कंस्ट्रक्टर्स या ब्लॉक्स के अंदर परिभाषित वेरिएबल्स को लोकल वेरिएबल्स कहा जाता है। वेरिएबल को मेथड के भीतर घोषित और इनिशियलाइज़ किया जाए

  1. - Java में Abstract Class और Interface में अंतर

    Java में, एब्स्ट्रैक्शन Abstract क्लासेज और इंटरफेस का उपयोग करके प्राप्त किया जाता है। दोनों में एब्स्ट्रैक्ट मेथड्स होते हैं जिन्हें चाइल्ड क्लास या इम्प्लीमेंटिंग क्लास को इम्प्लीमेंट करना होता है। Abstract क्लास और एक इंटरफ़ेस के बीच महत्वपूर्ण अंतर निम्नलिखित हैं।क्र. सं.मुख्य बिंदुAbstract Cla

  1. - एब्स्ट्रैक्ट क्लास और इंटरफेस में अंतर

    एक एब्स्ट्रैक्ट क्लास में इंस्टेंस मेथड्स हो सकते हैं जो डिफ़ॉल्ट व्यवहार लागू करते हैं। एक इंटरफेस केवल कॉन्स्टेंट्स और इंस्टेंस मेथड्स घोषित कर सकता है, लेकिन डिफ़ॉल्ट व्यवहार लागू नहीं कर सकता और सभी मेथड्स अंतर्निहित रूप से एब्स्ट्रैक्ट होते हैं। एक इंटरफेस के सभी मेंबर्स पब्लिक होते हैं और कोई