Tob*_*len 2 delphi oop abstract-methods
我正在处理一个大型代码库,它在这些类上有很多类和很多抽象方法.我对以下情况下人们对我应该做些什么的看法很感兴趣.
如果我有一个带有抽象方法的Parent-A类.只有2个孩子.如果Child-B实现了AbstractMethodA但Child-B没有实现,因为它不适用.
我是不是该
编辑:谢谢你的所有答案.它证实了我的怀疑,这不应该发生.经过进一步调查后发现这些方法根本没有使用,所以我完全删除了它们.
如果AbstractMethodA不适用于Child-B,那么Child-B不应该从Parent-A继承.
或者采取相反的观点,如果Child-B继承自Parent-A,而AbstractMethodA不适用于子级,那么它也不应该在父级中.
通过在Parent-A中放置一个方法,您说该方法适用于Parent-A及其所有子项.这就是继承意味着什么,如果你用它来表示不同的东西,你最终会与编译器发生严重争议.
[编辑 - 那说,如果方法确实适用,Mladen Prajdic的答案很好,但对于所涉及的一个或多个类别不应该做任何事情.一无所取的方法是IMO与不适用的方法不同,但也许我们并不是指"不适用"的相同内容
另一种技术是在Child-B中实现该方法,但让它做一些激烈的事情,如总是返回失败,或抛出异常,或其他东西.它可以工作,但应该被视为一种躲闪而不是简洁的设计,因为这意味着呼叫者需要知道他们所拥有的东西,他们被视为Parent-A 真的是一个孩子-B因此他们不应该调用AbstractMethodA.基本上你已经抛弃了多态性,这是OO继承的主要好处.就个人而言,我更喜欢这样做,而不是在基类中抛出异常,因为子类不能通过"忘记"实现该方法而"意外地"表现得很糟糕.它必须实现它,如果它实现它不工作,那么它明确地这样做.糟糕的情况应该是嘈杂的.