我还在学习OOP,而且我无法在我的应用中找到真实的界面用法。相反,我使用了很多抽象类。
我理解接口更像是你和你的代码之间的契约。对接口进行编码有助于为您的类设置标准,但抽象类也是如此。
接口指示如果您构建用户对象,它将始终具有x,y和z。 抽象类是相同的,但它们为您提供了额外的奖励:它们允许您在定义之上添加具体实现。
因此,唯一真正的用法是在任何实现之前编写接口,以便其他团队成员在依赖于我们的部分的lib的另一部分上并行工作。或者这是错误的理解吗?
如果抽象类让你击败两个世界,为什么选择接口+抽象?
注意:我知道我错了,接口背后必须有一个高度技术性的概念。这就是我要问的原因。
由于
答案 0 :(得分:4)
因为类可以扩展抽象类而也实现接口 - 或者有多个接口。
如果您希望您的班级满足特定界面定义的合同 - 例如这样你就可以将它传递给一个需要该接口的方法 - 你不必为了这样做而改变现有的继承层次结构 - 你只是断言它也实现了接口 ,然后给它所有必需的方法。
接口的要点是定义一个可以实现的合同但是你想要 - 它不与任何可能已经包含完整或部分实现的特定抽象类相关联。