![]() |
1
2
如果 您将其称为一个接口(即,通过使用命名约定“ifoo”,您似乎就是这样的接口),那么它应该是一个纯接口(没有实现)。 如果它只是一个抽象类,那么纯虚拟方法和实现方法的混合是完全合理的。 |
![]() |
2
9
当然。这就是如何 template method pattern 工作(尽管这不一定实现一个接口)-它是完全可以接受的,而且通常是一个好主意。 爪哇 AbstractList 类就是一个很好的例子。
编辑:很抱歉之前没有回复。你的
现在我同意Drpizza的观点——如果您将某个东西称为接口,那么它实际上不应该有任何实现。抽象基类可以有非抽象方法(根据您的问题标题),但我不认为“抽象基类”和“接口类”是等效的。这可能是我的C语言和Java背景,在这里你可以声明类型。 作为 一个接口-但不能提供任何实现。 |
![]() |
3
1
是的,当然。这是使用抽象类而不是接口的原因之一。 |
![]() |
4
1
我一直认为抽象类的实际用途是:实现一些对所有子代通用的基本行为,但使派生类特有的部分抽象化。 |
![]() |
5
0
对。在抽象基类中实现方法(虚方法或非虚方法)是非常好的,而且通常是可取的。如果你真的想要一个接口,最好使用你的第二个结构,这样读者就可以清楚地使用它,但是两者都是完全合法的C++。如果存在实现,我就不会使用“i”指示符。 |
![]() |
6
0
我认为没有理由不在抽象类中进行一些实现。 |
![]() |
Alex Pander · cleaner代码的嵌套命名空间[已关闭] 6 年前 |
![]() |
Jamil Noyda · 导入模块的最佳方式Python[复制] 6 年前 |
![]() |
Samselvaprabu · 我们是否需要不惜任何代价避免重复? 6 年前 |
![]() |
user9549524 · 基于一列的值从二维矩阵中提取值 6 年前 |
![]() |
MedAl · 不使用try/catch处理异常 6 年前 |
![]() |
Declan McKenna · 特殊情况模式在Swift中是否多余? 6 年前 |