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

सी # में आभासी और अमूर्त कार्यों के बीच क्या अंतर है?

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

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

वर्चुअल फ़ंक्शंस

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

निम्नलिखित एक वर्चुअल फंक्शन है -

public virtual int area() { }

यहां एक उदाहरण दिया गया है जिसमें दिखाया गया है कि वर्चुअल फ़ंक्शंस के साथ कैसे काम किया जाता है -

उदाहरण

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("Parent class area :");
         return 0;
      }
   }
   class Rectangle: Shape {
      public Rectangle( int a = 0, int b = 0): base(a, b) {
      }
      public override int area () {
         Console.WriteLine("Rectangle class area ");
         return (width * height);
      }
   }
   class Triangle: Shape {
      public Triangle(int a = 0, int b = 0): base(a, b) {
      }
      public override int area() {
         Console.WriteLine("Triangle class area:");
         return (width * height / 2);
      }
   }
   class Caller {
      public void CallArea(Shape sh) {
         int a;
         a = sh.area();
         Console.WriteLine("Area: {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();
      }
   }
}

आउटपुट

Rectangle class area
Area: 70
Triangle class area:
Area: 25

सार कार्य

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

निम्नलिखित C# में एक अमूर्त वर्ग में अमूर्त कार्यों का एक उदाहरण है -

उदाहरण

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. DirectX 11 और DirectX 12 में क्या अंतर है?

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

  1. जावास्क्रिप्ट में कार्यों और विधियों में क्या अंतर है?

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

  1. सी # में सूची और सरणी के बीच क्या अंतर है?

    एक सरणी एक ही प्रकार के तत्वों के एक निश्चित आकार के अनुक्रमिक संग्रह को संग्रहीत करती है, जबकि सूची एक सामान्य संग्रह है। सूची को परिभाषित करने के लिए - List<string7gt; myList = new List<string>(); सूची में तत्वों को सेट करने के लिए, आपको जोड़ें विधि का उपयोग करने की आवश्यकता है - myList