Abstract (抽象类)类是下面的可实例化类的框架, 那么我们可以操作其中的抽象类的成员, 从而达到控制可实例化类中相关的成员?对否?

解决方案 »

  1.   

    抽象类不可实例化。
    子孙类实现了的成员才能使用

    type
    TAbstractClass=class(TObject)
    protected
      procedure method1;virtual;abstract;
      procedure method2;virtual;abstract;
    end;
    TMyClass=class(TAbstractClass)
    public
      procedure method2;override;
    end;
    procedure TMyClass.method2;
    begin
      showmessage('ok');
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var
      MyInstance:TAbstractClass;
    begin
     MyInstance:=TMyClass.Create;
     MyInstance.method2;  //允许
     MyInstance.method1;  // 出错,因为它没有被实现
     MyInstance.Free;
    end;