توضيح معاني Override / Abstract / Dynamic / Virtual
#2
إقتباس :- Override : (اظن انها للدلالة على أن الإجراء سيكون موروث ؟؟؟ بـ Inherited)

الدالة التى تكون override يجب ان تكون تحت صنف مورث من صنف اخر يحتوى على على دالة لها نفس اسم الدالة التى تكون override
بحيث تكون تلك الدالة (dynamic او virtual)
بحيث يمكن استدعاء الدالة (dynamic او virtual) من الدالة override عن طريق الكلمة inherited
بحيث هذه الكلمة تقوم باستدعاء الدالة (dynamic او virtual) التى لها نفس اسم الدالة override
و ادا اردنا استدعاء دالة اخرى ليست لها نفس اسم الدالة override نقوم بكتابة اسمها عادى او نكتب
inherited ثم اسم الدالة .
مثلا
PHP كود :
type
  TFigure 
= class
    
procedure Dessiner1; virtual;
    
procedure Dessiner2; virtual;
  
end;
  
TRectangle = class(TFigure)
    
procedure Dessiner2; override;
  
end; 

PHP كود :
procedure TRectangle.Dessiner2;
begin
  inherited
;
  
ShowMessage('TRectangle[override]');
end; 

PHP كود :
procedure TForm1.FormCreate(Sender: TObject);
var
  
Figure: TFigure; {or Figure: TRectangle}
begin
 Figure 
:= TRectangle.Create;
  
Figure.Dessiner2;
end; 

سيتم استدعاء الدالة
كود :
TFigure.Dessiner[color=Red]2[/color];
ثم
كود :
TRectangle.Dessiner2;
=================

بالنسبة ل Abstract ... الله اعلم ... لم افهم اهميتها .

=================

بالنسبة virtual و dynamic الله اعلم لا يوجد فرق بينها سوى virtual مخصصة للسرعة و dynamic مخصصة لحجم الكود . و فى كثير من الاحيان من المستحسن استعمال virtual
هدا ما جاء به هالب
كود :
Remarque N'utilisez les méthodes dynamiques que s'il existe un avantage clair et observable. Utilisez habituellement les méthodes virtuelles.

و الله اعلم . :unsure:
الرد


الردود في هذا الموضوع
توضيح معاني Override / Abstract / Dynamic / Virtual - بواسطة hanipino - 19-12-2009, 08:29 PM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم