2008-10-03 10 views
8

में ओवरराइड किए गए फ़ंक्शन को रोकना डेल्फी (2007) में उप-वर्ग में ओवरराइड होने से सुपरक्लास में फ़ंक्शन/प्रक्रिया को कैसे रोकूं?डेल्फी

मैं इसे चिह्नित करना चाहता हूं इसलिए इसे बदला नहीं जा सकता है, मेरा मानना ​​है कि अंतिम कीवर्ड है लेकिन मेरे जीवन के लिए दस्तावेज नहीं ढूंढ सकता है, इसलिए मुझे 100% यकीन नहीं है कि मुझे इसकी आवश्यकता है।

उत्तर

16

कीवर्ड final जैसा आपने सोचा था। http://dn.codegear.com/article/34324 और http://blogs.teamb.com/rudyvelthuis/2005/05/13/4311 देखें। इसके अलावा आप किसी को भी विरासत से वंचित करने से रोकने के लिए अपनी कक्षा को सील कर सकते हैं। आप एक डेल्फी संस्करण की तुलना में 7.

type 
    TSomeClass = class 
    protected 
    procedure SomeVirtualMethod; virtual; 
    end; 

    TOtherClass = class(TSomeClass) 
    protected 
    procedure SomeVirtualMethod; override; final; 
    end; 
9

आप सही हैं उच्च की जरूरत है - यह "अंतिम" है। यह स्निपेट इसे दिखाता है। (Marco Cantu की पुस्तकों में से एक से)

type 
    TDeriv1 = class (TBase) 
    procedure A; override; final; 
    end; 

    TDeriv2 = class (TDeriv1) 
    procedure A; override; // error: "cannot override a final method" 
    end; 

संकलन देता है:

[Pascal Error] Unit1.pas(11): E2352 Cannot override a final method 

एक बात है कि मुझे हैरान कर दिया: यह सुविधा Win32 डेल्फी में समर्थित है, न सिर्फ डेल्फी नेट

के लिए