![](/img/trans.png)
[英]Is it ok to unit-test an abstract class by instantiating it as a mock object?
[英]Instantiating abstract class object in inheriting class
我需要找到一種方法,可以在名為Spreadsheet的繼承類中從名為Cell的抽象基類實例化對象。 在我所看到的所有地方,人們都說無法做到這一點,但是在我的家庭作業中,我必須這樣做,它特別表明我們不能使父類變得非抽象。
這是作業的確切報價:
同樣,您需要在這里設計一個實際上允許電子表格創建單元格的設計,並且之前有關於如何執行此操作的提示。 您不能將公開聲明的單元格類設為非抽象。
我能想到的唯一“提示”是父類是公共抽象,繼承類只是公共類,並且它們都在同一個DLL中。
有人有想法么?
編輯:(有關更多信息)電子表格類應該包含一個二維單元格數組。 因此,為了填充此2d數組,我們需要制作單元格對象,然后將其放入2d電子表格數組的相應索引中。 唯一的問題是,因為單元格類是抽象的,所以我們無法創建任何單元格。 因此,我如何制作一個單元格並將其放入數組中?
這意味着您需要將Cell
用作基類,並且繼承類至少需要一些實現。
看來,這項特殊的作業是足球術語中所謂的“ 醫院通行證 ”的一部分- Spreadsheet
不應像您提到的那樣繼承自Cell
。
無論如何,一旦編寫了派生類,就可以這樣做:
Cell myCell = new MyDerivedCell();
瞧,您有一個抽象類的實例(抽象類不能直接實例化)。
這樣做的好處是,您可以將大部分通用單元功能放入Cell
,然后指定一些方法或屬性,這些方法或屬性應針對Cell
的更專業派生而被覆蓋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.