考虑你有一个abstract base class
一个是从其他类X.面向对象的设计谜语
类重写方法foo1
继承。
有几个其他类A1,A2,A3是concrete
类。所有具体类继承方法foo1
。
方法foo1
几乎就像应该适用于所有具体类的通用算法。
这是“几乎”,因为算法中存在一个例外条件,某些类只能说A1,A3需要在foo
的开始处放一些其他方法foo2
。对于A2我们不需要启动foo2
。
问题是如果我如果我在类A中实现foo2
所有它的孩子也会继承这个函数,这是不是很好的设计?
我想到将foo2
排除在一个接口之外,这个接口将由具体的类实现 - >但这并不好,因为foo1
这叫foo2
在基类上!
任何想法如何以适当的方式解决这个问题?
谢谢
你可以做foo2的私人在A,而是增加其子类可以覆盖一个受保护的虚拟财产,以及用于以一种确定的子类要调用foo2的在foo1的开头。 –
我想我理解并且看到了一个解决方案,但是我认为如果你在你的问题ala'抽象类MyShape {....'中添加了一些简单的代码会更好。我不确定我是否遵循,但这会有所帮助 –