在继承类中实例化抽象类对象

问题描述:

我需要找到一种方法来从名为Cell的抽象基类中实例化一个对象,该类名为Spreadsheet。我所看到的每个人都说它不能完成,但我需要为作业的一部分完成它,并且明确地说我们不能让父类不是抽象的。在继承类中实例化抽象类对象

下面是从作业的确切报价:

同样,你需要拿出与这里的设计,实际上允许 电子表格创建细胞和之前有提示有关如何 做到这一点。您不能使公开声明的单元类 非抽象。

我能想到的唯一“提示”是父类是公共抽象的,继承类只是一个公共类,它们都在同一个DLL中。

任何人有任何想法?

编辑:(更多信息) 电子表格类应该包含一个2d的单元格数组。所以为了填充这个二维数组,我们需要制作单元格对象,然后放入二维电子表格数组中的相应索引中。唯一的问题是我们不能制作任何单元格,因为单元格类是抽象的。那么,我如何制作一个单元格并将其放入数组中?

+0

我没有看到关于你问的问题的作业中的任何东西。你能不同地描述它还是添加更多细节?因为写作没有意义。 – 2014-09-28 02:56:25

这意味着你需要使用Cell作为基类,并且继承类需要至少有一些实现。

看起来这个特殊的家庭作业有点像足球术语中的“hospital pass” - 如你所说,Spreadsheet不应该从Cell继承。

在任何情况下,一旦你写你的派生类,你可以这样做:

Cell myCell = new MyDerivedCell(); 

,瞧,你有一个抽象类的实例(抽象类不能直接实例化)。

这样做的好处是,您可以将大部分通用单元格功能放入Cell中,然后指定一些方法或属性,这些方法或属性应该被Cell的更专门的派生推翻。

+0

对不起,但我遇到了一些麻烦。所以我在Cell类抽象中创建了一个属性,并且我声明了另一个名为lclass的类来覆盖抽象属性,但是当我想使用单元类构造函数来创建单元时,它不起作用。基本上我想要的就像'ICell cell = new ICell(i,j)',但问题是构造函数应该设置的值在抽象基类中是私有的。有没有什么办法可以通过派生类调用抽象基类构造函数来创建对象? – killermist 2014-09-28 05:21:42

+1

是的,您可以通过在派生类中使用[* base *](http://msdn.microsoft.com/en-us/library/hfw7t1ce.aspx)关键字作为ctor定义的一部分来链接构造函数。 (按照该链接,它解释了一切)。 – slugster 2014-09-28 05:54:22