在定义上强制确切的类

时间:2014-09-22 15:29:56

标签: c# class polymorphism

我们说我有几节课:

public class ParentClass
{
    <common functionality>
    ...
}

public class ChildClass : ParentClass
{
    <additional functionality>
    ...
}

在我的代码中,我使用ParentClassChildClass类型的对象 - 有时我不需要ChildClass上的额外功能,有时候我也需要。{1}}。 (实际上还有几代课程涉及,但让我们保持简单。)有没有办法让它如此,如果我声明一个这样的对象:

public ParentClass thing;

赢得以后能够将thing定义为:

thing = new ChildClass();

我希望多态性达到ChildClass继承ParentClass所有功能的程度,但我不希望能够在定义时使用更具体的类宾语。我可以以某种方式禁止这种情况吗?当然,我可以使ParentClass抽象,但后来我不能拥有ParentClass类型的对象,我有时需要它们。

1 个答案:

答案 0 :(得分:1)

确保将定义的工厂传递给代码的唯一方法是创建ParentClass,而不允许其他子类。

public ParentClass thing;
thing = ParentClassFactory.Build();

问题是将工厂推向你的代码,但它可以让你控制此时设置的实例类型。