我有三个课程:CookedItem
:ConsomableItem
:Item
Item
实现了这种方法:
protected void Initialize(string name,TypeItem type) {...}
ConsomableItem
实现了这种方法:
protected void Initialize(float duration,string name,TypeItem type) {...}
现在这是我的问题。调用CookedItem
的正确方法是ConsomableItem.Initialize()
。
我可以隐藏方法Item.Initialize()to only see the method
ConsomableItem.Initialize()`?
我无法使用override
,因为签名不同。
有什么建议吗?
答案 0 :(得分:2)
您违反了SOLID的第三个主体。 Liskov替换校长。看看here,了解它是什么。
基本上你构建了一个错误的继承。
您应该做的是ICookable
和IConsumable
接口作为行为。然后你将有两个不同的项类实现(你仍然可以在抽象类中抽象它们)。
答案 1 :(得分:0)