У меня есть абстрактный класс:
type
TInterfaceMethod = class abstract
public
destructor Destroy; virtual; abstract;
function GetBasePlan: Word; virtual; abstract;
procedure CountBasePlan; virtual; abstract;
procedure Calculate; virtual; abstract;
procedure PrepareForWork; virtual; abstract;
end;
и производный класс:
type
TFogelMethod = class(TInterfaceMethod)
private
matrix: TFogelMatrix;
BasePlan: Word;
public
constructor Create(var matr: TFogelMatrix);
procedure Calculate;
function GetBasePlan: Word;
procedure CountBasePlan;
procedure PrepareForWork;
destructor Destroy;
end;
Вопрос в том, могу ли я поместить реализацию методов GetBasePlan и CountBasePlan в базовый класс, сделать их только виртуальными - не абстрактными, как сейчас - и также поместить туда элемент BasePlan? Итак, могу ли я сделать это:
type
TInterfaceMethod = class abstract
private
BasePlan: Word;
public
destructor Destroy; virtual; abstract;
function GetBasePlan: Word; virtual;
procedure CountBasePlan; virtual;
procedure Calculate; virtual; abstract;
procedure PrepareForWork; virtual; abstract;
end;
Если я смогу это сделать, будет ли это хорошо с точки зрения объектно-ориентированного проектирования и как я могу точно получить доступ к этому члену из производных классов?