ну тут надо по другому - либо в родителе метод абстрактрый и реализован в потомках, либо шаблоны/дженерики.
Вариант первый - классическое ООП:
Код:
type
A = class
procedure add( i : integer); virtual; abstract;
end;
B = class(A)
ab : array of integer;
procedure add( i : integer); override;
end;
C = class(A)
ac : array of integer;
procedure add( i : integer); override;
end;
procedure B.add( i : integer); override;
begin
setlength(ab,length(ab)+1);
ab[high(ab)] := i;
end;
procedure C.add( i : integer); override;
begin
setlength(ac,length(ac)+1);
ab[high(ac)] := i;
end;
Вариант второй - generic
Код:
type
class TA<T>
a : array Of T;
procedure Add(i : T);
end;
procedure TA<T>.Add(i : T);
begin
setlength(a,length(a)+1);
a[high(a)] := i;
end;
...
var
b : TA<integer>;
c : TA<int64>;
begin
b := TA<integer>.create;
c := TA<int64>.create;
...