title: Can I hold any data members in abstract base class?
body: <p>I have an abstract class:</p>
  
  <pre><code>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;
  </code></pre>
  
  <p>and a derived class:</p>
  
  <pre><code>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;
  </code></pre>
  
  <p>The question is, can I place the implementation of GetBasePlan and CountBasePlan methods into base class, make them only virtual - not abstract as now - and also place member BasePlan there? So, can I do this:</p>
  
  <pre><code>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;
  </code></pre>
  
  <p>In case I can do it, will it be good from the point of view of object-oriented design, and how can I exactly access this member from derived classes?</p>