Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 面向对象的条件执行_Oop_Pascal - Fatal编程技术网

Oop 面向对象的条件执行

Oop 面向对象的条件执行,oop,pascal,Oop,Pascal,所以,我正在寻找实现下一件事的正确方法。 举个例子,我对任何事情都有父类。我存储的变量是父类的对象 我想有条件地使这个变量对象成为子类 我知道如何用其他方法实现下面的事情(因为这里有很多方法),但我想要好的方法,所以我的代码看起来就是这样 TObject obj; if something = 1 then obj := Child1; else if something = 2 then obj := Child2; 最后,在我的任务中,我想调用一些属于父类的函数,这些函数可

所以,我正在寻找实现下一件事的正确方法。 举个例子,我对任何事情都有父类。我存储的变量是父类的对象

我想有条件地使这个变量对象成为子类

我知道如何用其他方法实现下面的事情(因为这里有很多方法),但我想要好的方法,所以我的代码看起来就是这样

TObject obj;
if something = 1 then 
   obj := Child1;
else if something = 2 then 
   obj := Child2;
最后,在我的任务中,我想调用一些属于父类的函数,这些函数可以(或不可以)在子类中实现

UPD:

我自己找到了最好的解决方案(据我所见),看起来:

var obj : TParent;
  case something of
    1: obj := TChild1.Create;
    2: obj := TChild2.Create;

使用返回正确子对象的方法将某个对象设置为对象。

使用面向对象的原则。您将拥有一个父类,以及一些从父类继承的子类。对特定于子级的变量和功能使用重写。如果有适用于所有子类或父类的功能,那么在父类中实现它。

起初,我以为你在问一些已经是面向对象范例一部分的问题(即多态性),但你的措辞令人困惑,我不确定我的第一个猜测是否正确。目前,我投票决定暂缓这个问题,因为“不清楚你在问什么”。请随意编辑您的问题,详细说明您的具体想法。您的问题似乎非常不清楚,因为听起来(正如@AndriyM所说)像是在问基本多态性。也许,这将有助于展示基本继承和多态性的实际可编译/可运行示例。如果这不是您所指的,请您的问题更清楚地说明您所问的问题。因此,如果这是您真正想要的解决方案,您的问题与OOP无关,而是询问如何在Pascal中进行分支(高效/简洁/随便)。