1 unit getterexample1;
2 
3 {$mode objfpc}{$H+}
4 
5 interface
6 
7 uses
8   Classes, SysUtils;
9 
10 type
11 
12   { TOldest }
13 
14   TOldest = class
15   private
16     FBar: integer;
GetBarnull17     function GetBar: integer; virtual;
18   public
19     property Bar: integer read GetBar;
20   end;
21 
22   { TOlder }
23 
24   TOlder = class(TOldest)
25   private
GetBarnull26     function GetBar: integer; override;
27   public
28     procedure DoSomething;
GetOldestnull29     function GetOldest(Older: TOlder): TOldest;
30   end;
31 
32 implementation
33 
34 { TOldest }
35 
GetBarnull36 function TOldest.GetBar: integer;
37 begin
38   Result:=FBar;
39 end;
40 
41 { TOlder }
42 
GetBarnull43 function TOlder.GetBar: integer;
44 begin
45   Result:=FBar;
46 end;
47 
48 procedure TOlder.DoSomething;
49 var
50   Older: TOlder;
51 begin
52   Older:=TOlder.Create;
53   with TOlder(Older) do
54     writeln(Bar);
55   with Older.GetOldest(Self) do
56     writeln(Bar);
57 end;
58 
GetOldestnull59 function TOlder.GetOldest(Older: TOlder): TOldest;
60 begin
61   Result:=Older;
62 end;
63 
64 end.
65 
66