'Lu,
J'apprends les classes en delphi et toutes les histoires d'héritage, mais il y a quelque chose que je ne comprends pas trop :
Code :
- unit Unit1;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls;
- type
- TTest = class(TForm)
- Button1: TButton;
- procedure Button1Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- type
- TBaseClass = class
- X: integer;
- Y: integer;
- function addition: integer;
- end;
- type
- TSecondClass = class(TBaseCLass)
- Z: integer;
- function addition: integer;
- end;
- var
- Test: TTest;
- implementation
- {$R *.dfm}
- function TBaseCLass.addition: integer;
- begin
- result := X + Y;
- end;
- function TSecondClass.addition: integer;
- begin
- result := inherited addition + Z;
- end;
- procedure TTest.Button1Click(Sender: TObject);
- var
- BaseObj: TBaseClass;
- SecondObj: TSecondClass;
- Result1: integer;
- Result2: integer;
- begin
- BaseObj := TBaseClass.Create;
- SecondObj := TSecondClass.Create;
- BaseObj.X := 15;
- BaseObj.Y := 15;
- SecondObj.Z := 100;
- Result1 := BaseObj.addition;
- Result2 := SecondObj.addition;
- ShowMessage(IntTOStr(Result1)+' - '+IntToStr(Result2));
- end;
- end.
|
Result1 me renvoie 30 : normal
Result2 me renvoie 100 : pourquoi ?
Pourquoi est-ce que result2 ne me renvoie-t-il pas 130 ? Pcq si j'ai bien compris, SecondObj va hériter de toutes les données de BaseObj ... mais ici il n'hérite pas de X ni de Y
(Meme que j'ai oublié de detruire mes objets mais ca on s'en balance pour le moment )
Message édité par Yana le 13-08-2003 à 15:55:57