19-12-2009, 08:29 PM
إقتباس :- 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:

