जावा या सी # में, हम अंतिम कक्षाओं का उपयोग कर सकते हैं। अंतिम कक्षाएं विशेष प्रकार की कक्षा हैं। हम दूसरी क्लास बनाने के लिए उस क्लास का विस्तार नहीं कर सकते। सी ++ में ऐसा कोई सीधा तरीका नहीं है। यहां हम देखेंगे कि C++ में फाइनल क्लास का अनुकरण कैसे किया जाता है।
यहां हम MakeFinalClass नामक एक अतिरिक्त वर्ग बनाएंगे (इसका डिफ़ॉल्ट निर्माता निजी है)। इस फ़ंक्शन का उपयोग हमारे उद्देश्य को हल करने के लिए किया जाता है। मुख्य क्लास MyClass MakeFinalClass के कंस्ट्रक्टर को कॉल कर सकती है क्योंकि वे फ्रेंड क्लास हैं।
हमें एक बात पर ध्यान देना होगा कि MakeFinalClass भी एक वर्चुअल बेस क्लास है। हम इसे वर्चुअल बेस क्लास बनाएंगे क्योंकि हम MyDerivedClass के कंस्ट्रक्टर के माध्यम से MakeFinalClass के कंस्ट्रक्टर को कॉल करना चाहते हैं, न कि MyClass (वर्चुअल बेस क्लास के कंस्ट्रक्टर को उस क्लास द्वारा नहीं कहा जाता है जो इससे इनहेरिट करता है, कंस्ट्रक्टर के बजाय जो कि है कंक्रीट वर्ग के निर्माता द्वारा बुलाया गया)।
उदाहरण
#include <iostream> using namespace std; class MyClass; class MakeFinalClass { private: MakeFinalClass() { cout << "This is constructor of the MakeFinalClass" << endl; } friend class MyClass; }; class MyClass : virtual MakeFinalClass { //this will be final class public: MyClass() { cout << "This is constructor of the final Class" << endl; } }; //try to make derived class class MyDerivedClass : MyClass { public: MyDerivedClass() { cout << "Constructor of the Derived Class" << endl; } }; main() { MyDerivedClass derived; }
आउटपुट
In constructor 'MyDerivedClass::MyDerivedClass()': [Error] 'MakeFinalClass::MakeFinalClass()' is private
हम MyClass के ऑब्जेक्ट बना सकते हैं क्योंकि यह MakeFinalClass का मित्र है, और इसके कंस्ट्रक्टर्स तक इसकी पहुंच है।
उदाहरण
#include <iostream> using namespace std; class MyClass; class MakeFinalClass { private: MakeFinalClass() { cout << "This is constructor of the MakeFinalClass" << endl; } friend class MyClass; }; class MyClass : virtual MakeFinalClass { //this will be final class public: MyClass() { cout << "This is constructor of the final Class" << endl; } }; main() { MyClass obj; }
आउटपुट
This is constructor of the MakeFinalClass This is constructor of the final Class