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

C# में virtual और abstract फ़ंक्शन के बीच अंतर क्या है?

Abstract विधियां कार्यान्वयन प्रदान नहीं करतीं और वे व्युत्पन्न वर्गों को विधि ओवरराइड करने के लिए बाध्य करती हैं। यह abstract क्लास के तहत घोषित होती है। एक abstract विधि में केवल विधि परिभाषा होती है।

Virtual विधियों का एक कार्यान्वयन होता है, abstract विधि के विपरीत, और यह abstract और गैर-abstract क्लास में मौजूद हो सकती है। यह व्युत्पन्न वर्गों को इसे ओवरराइड करने का विकल्प प्रदान करती है।

Virtual फ़ंक्शन

virtual कीवर्ड किसी विधि, गुण, इंडेक्सर, या ईवेंट को संशोधित करने में उपयोगी है। जब आपके पास किसी क्लास में परिभाषित एक फ़ंक्शन होता है जिसे आप विरासत में मिली क्लास(एस) में लागू करना चाहते हैं, तो आप virtual फ़ंक्शन का उपयोग करते हैं। Virtual फ़ंक्शन को विभिन्न विरासत वाली क्लास में अलग-अलग तरीके से लागू किया जा सकता है और इन फ़ंक्शन को कॉल करने का निर्णय रनटाइम पर लिया जाएगा।

निम्न एक virtual फ़ंक्शन है:

public virtual int area() { }

यहां एक उदाहरण है जो दिखाता है कि virtual फ़ंक्शन के साथ कैसे काम करें:

उदाहरण

using System; 
namespace PolymorphismApplication { 
    class Shape { 
        protected int width, height; 
        public Shape(int a = 0, int b = 0) { 
            width = a; 
            height = b; 
        } 
        public virtual int area() { 
            Console.WriteLine("पैरेंट क्लास क्षेत्र:"); 
            return 0; 
        } 
    } 
    class Rectangle: Shape { 
        public Rectangle(int a = 0, int b = 0): base(a, b) { 
        } 
        public override int area() { 
            Console.WriteLine("रेक्टेंगल क्लास क्षेत्र"); 
            return (width * height); 
        } 
    } 
    class Triangle: Shape { 
        public Triangle(int a = 0, int b = 0): base(a, b) { 
        } 
        public override int area() { 
            Console.WriteLine("ट्रायंगल क्लास क्षेत्र:"); 
            return (width * height / 2); 
        } 
    } 
    class Caller { 
        public void CallArea(Shape sh) { 
            int a; 
            a = sh.area(); 
            Console.WriteLine("क्षेत्र: {0}", a); 
        } 
    } 
    class Tester { 
        static void Main(string[] args) { 
            Caller c = new Caller(); 
            Rectangle r = new Rectangle(10, 7); 
            Triangle t = new Triangle(10, 5); 
            c.CallArea(r); 
            c.CallArea(t); 
            Console.ReadKey(); 
        } 
    } 
}

आउटपुट

रेक्टेंगल क्लास क्षेत्र 
क्षेत्र: 70 
ट्रायंगल क्लास क्षेत्र: 
क्षेत्र: 25

Abstract फ़ंक्शन

C# में abstract कीवर्ड abstract क्लास और abstract फ़ंक्शन के लिए उपयोग किया जाता है। C# में एक abstract क्लास में abstract और गैर-abstract विधियां शामिल होती हैं।

निम्न C# में abstract क्लास में abstract फ़ंक्शन का एक उदाहरण है:

उदाहरण

using System; 
public abstract class Vehicle { 
    public abstract void display(); 
} 
public class Bus : Vehicle { 
    public override void display() { 
        Console.WriteLine("Bus"); 
    } 
} 
public class Car : Vehicle { 
    public override void display() { 
        Console.WriteLine("Car"); 
    } 
} 
public class Motorcycle : Vehicle { 
    public override void display() { 
        Console.WriteLine("Motorcycle"); 
    } 
} 
public class MyClass { 
    public static void Main() { 
        Vehicle v; 
        v = new Bus(); 
        v.display(); 
        v = new Car(); 
        v.display(); 
        v = new Motorcycle(); 
        v.display(); 
    } 
}

आउटपुट

Bus 
Car 
Motorcycle
  1. डायरेक्टएक्स 11 और डायरेक्टएक्स 12 में क्या अंतर है? डायरेक्टएक्स 11 और डायरेक्टएक्स 12 में क्या अंतर है?

    डायरेक्टएक्स एपीआई का एक संग्रह है, या एप्लिकेशन प्रोग्रामिंग इंटरफेस, जिसका उपयोग सॉफ्टवेयर द्वारा मल्टीमीडिया सामग्री को रेंडर करने और ग्राफिकल हार्डवेयर के साथ संचार करने के लिए किया जाता है। डायरेक्टएक्स का प्रमुख घटक एपीआई, डायरेक्ट3डी, सॉफ्टवेयर और ग्राफिक्स हार्डवेयर के बीच संचार को संभालता ह

  1. जावास्क्रिप्ट में फंक्शन्स और मेथड्स में क्या अंतर है? जावास्क्रिप्ट में फंक्शन्स और मेथड्स में क्या अंतर है?

    जावास्क्रिप्ट में फंक्शन्स और मेथड्स समान हैं, लेकिन एक मेथड एक फंक्शन है, जो एक ऑब्जेक्ट की प्रॉपर्टी है।निम्नलिखित जावास्क्रिप्ट में फंक्शन का एक उदाहरण है:function functionname(param1, param2){    // code }उदाहरणमेथड एक ऑब्जेक्ट से जुड़ा फंक्शन है। निम्नलिखित जावास्क्रिप्ट में मेथड का ए

  1. - C# में लिस्ट और ऐरे में क्या अंतर है?

    एक ऐरे एक ही प्रकार के एलिमेंट्स के निश्चित आकार के अनुक्रमिक संग्रह को स्टोर करता है, जबकि लिस्ट एक जेनेरिक कलेक्शन है।लिस्ट को परिभाषित करने के लिए:List myList = new List();लिस्ट में एलिमेंट्स सेट करने के लिए, आपको Add मेथड का उपयोग करना होगा:myList.Add(Audi); myList.Add(BMW); myList.Add(Chevrolet