从抽象基类创建子类的最佳方法。
在我的项目中,我以这种方式有一个基类抽象和两个子类。
TbaseClass=class
public
procedure Doit;virtual;abstract;
procedure Calculate;virtual;abstract;
Tchild1class=class(TbaseClass)
..
protected
procedure CalcArea;virtual;
public
procedure Doit;override;
procedure Calculate;override;
Tchild2class=class(Tchild1class)
protected
procedure CalcArea;override;
在我的 buttonclick 代码中,我以这种方式创建了所需的子类,并且正在工作。
.....
var
T:TBaseClass;
begin
case OP of
1: T:=Tchild1class.Create;
2: T:=TChild2Class.Create;
T.Doit;
T.Calculate;
end;
我的问题是下一个。我可以在我的基本抽象类中创建一个构造函数创建过程,这取决于 int 参数生成所需的子类???例如:
constructor TBaseClass.Create(OP:integer);
begin
inherited;
case OP of
1: Tchild1class.Create; ///>>>???
2: TChild2Class.Create; //>>>>???
end;
这可能吗?
这样做的最佳方法是什么?