يوفر مفهوم الأساليب الافتراضية في لغة C آلية قوية لتحقيق تعدد الأشكال وتجاوز الطريقة. ومع ذلك، فإن السؤال الذي يطرح نفسه: لماذا نجعل الطريقة الخاصة افتراضية؟
في سياق الميراث، لا يمكن الوصول إلى الطرق الخاصة إلا داخل الفئة التي تم تعريفها فيها. ومن الناحية المنطقية، قد يفترض المرء أن جعل الطريقة الخاصة افتراضية من شأنه أن يجعل الطريقة الخاصة افتراضية. لا يكون مفيدًا لأنه لا يمكن الوصول إليه أو تجاوزه بواسطة الفئات المشتقة.
ومع ذلك، هناك ميزة كبيرة للإعلان عن طريقة خاصة كطريقة خاصة Virtual:
كما أوضح هيرب سوتر، الخبير الرائد في برمجة C، فإن جعل الطريقة الخاصة افتراضية يسمح للفئات المشتقة بتجاوز تنفيذ الطريقة مع الحفاظ على الطبيعة الخاصة للطريقة. هذا يعني أن الفئات المشتقة يمكنها تخصيص سلوك الطريقة دون تعريضها للمستدعيين الخارجيين.على سبيل المثال، خذ بعين الاعتبار المثال التالي:class HTMLDocument : public Document, public CachedResourceClient {
private:
virtual bool childAllowed(Node*);
virtual PassRefPtr createElement(const AtomicString& tagName, ExceptionCode&);
};
هنا، كل من ChildAllowed و createElement هما طريقتان افتراضيتان خاصتان. يمكن للفئات المشتقة من HTMLDocument تجاوز هذه الأساليب لتخصيص سلوكها وفقًا لمتطلبات محددة. ومع ذلك، تظل هذه الأساليب غير قابلة للوصول خارج الفئات المشتقة، مع الحفاظ على تغليف الفئة الأساسية. باختصار، جعل الطرق الخاصة افتراضية يوفر آلية قوية لتخصيص تنفيذ الأساليب الموروثة في الفئات المشتقة مع الحفاظ على الخصوصية من تلك الأساليب. وهذا يسمح بقدر أكبر من المرونة والتوسع دون المساس بمبادئ التغليف.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3