C++ Abstract Classes

Introduction to C++ Abstract Classes

Abstract classes ऐसी classes होती है जिनको सिर्फ दूसरी classes द्वारा inherit करने के लिए ही define किया जाता है। Abstract classes का उद्देश्य दूसरी classes को एक structure provide करना होता है जिसे inherit किया जा सके।

किसी class को abstract बनाने के लिए उसमें कम से कम एक pure virtual function define किया जाना आवश्यक होता है। Pure virtual function सिर्फ method का declaration होता है। Pure virtual function = 0 द्वारा declare किया जाता है।

एक pure virtual function की definition वह class provide करती है जो abstract class को inherit करती है। Inherit करने वाली class के लिए pure virtual function की definition provide करना आवश्यक होता है।

यदि ऐसा नहीं किया जाता है तो inherit करने वाली class स्वयं भी abstract बन जाती है। इसके बाद उसे inherit करने वाली class के लिए pure virtual function की definition provide करना आवश्यक हो जाता है।

Normal classes की तरह किसी abstract class के objects नहीं create किये जा सकते है। यदि ऐसा करने का प्रयास किया जाता है तो error generate होती है।

ऐसा इसलिए होता है क्योंकि abstract classes में pure virtual functions की definition नहीं होती है। जब तक किसी method की definition ना हो तो उसे use नहीं किया जा सकता है।

C++ में abstract classes के माध्यम से ही interfaces implement किये जाते है। दूसरे शब्दों में कहा जाए तो C++ में abstract classes ही interfaces होती है। C++ में abstract classes का मुख्य उद्देश्य modern programming languages (java, C# आदि) की तरह interfaces implement करना ही होता है।

Abstract classes को define करने के लिए आपको pure virtual functions के बारे में पता होना आवश्यक है। इसलिए यदि आपने अभी तक pure virtual functions के बारे में नहीं पढ़ा है तो इनके बारे में विस्तृत जानकारी के लिए कृपया C++ Virtual Functions in Hindi tutorial पढ़े।

Syntax of C++ Abstract Classes

C++ में abstract class (interface) define करने का general syntax निचे दिया जा रहा है।

class-keyword class-name
{
     //Normal members here (variables, methods)
    //At least one pure virtual function;
}

जैसा की आप ऊपर दिए गए syntax में देख सकते है किसी normal class की ही तरह abstract classes में variables और methods define किये जाते है। इसके अलावा एक abstract class में pure virtual functions भी define किये जाते है।

जब तक कम से कम एक pure virtual function नहीं define किया जाएगा तब तक वह class abstract नहीं कहलाएगी। आप चाहे तो किसी class के सभी functions को pure virtual define कर सकते है।

Example of C++ Abstract Classes

C++ में abstract classes के उपयोग को निचे उदाहरण द्वारा समझाया जा रहा है।

#include<iostream>
using namespace std;

class myAbstractClass
{

  public:
    int Num;
    virtual void setNum(int n) = 0;

    virtual void display()
    {
          cout<<"Num is : "<<Num;
    }
};

class myClass : myAbstractClass
{

public:
    void setNum(int n)
    {
        this->Num = n;
        this->display();
    }
};

int main()
{
   myClass obj;
   obj.setNum(5);
   return 0;
}

ऊपर दिया गया उदाहरण निचे दिया गया output generate करता है।

Num is : 5