【发布时间】:2013-02-08 00:49:54
【问题描述】:
我正在努力学习高级别的 OOP 概念。我正在阅读主题界面并且感到困惑。但首先,让我告诉你究竟是什么导致了这种混乱。
我测试了这个Code Sample。但我对接口的使用感到困惑。在实现该代码之后,在我看来,我可以通过简单地创建一个实例来从类 A 中调用方法 DoFirst。那么为什么首先使用接口呢?
类似这样的:
A myA = new A();
myA.DoFirst();
同样,
B myB = new B();
myB.DoFirst();
在这两个类中,我都必须实现一个名为“DoFirst”的方法,那么接口对我有什么好处?
我不能自己在不同的类中编写这些方法吗?
我的第二个问题,假设我有一个有 5 个方法的接口。如果一个类实现了它,并且只想提供 3 个方法的实现,而不是编写接口提供的所有 5 个方法的代码。这不是没用吗?为什么有我不想要的访问方法?
有人可以用例子回答这些吗(非常感谢)?
【问题讨论】:
-
我看到接口的好处之一是允许模拟对象实现以支持为尚未编写的代码编写单元测试。我还帮助团队协调,所以如果我希望你创建一个执行 X Y 和 Z 的对象,我可以模拟它直到你完成你的实现,这让我可以继续我的工作,直到你完成你的工作。同样在第二种情况下,我将为 5 种方法和 3 种方法创建不同的接口。省略某些方法一定是有原因的吧?
-
看看您链接中的第一个答案,它实际上回答了您所关心的问题
-
请一次只问一件事。对于两个问题,创建两个单独的 SO 问题(如果它们相关,请插入链接)。
-
是的,但是您可以查看
abstract和virtual类型,接口的想法是确保一个类实现其中的所有类。再次参考我的例子;这会使我的课程使用的代码崩溃 -
最简单的可能答案:当您需要在外部引用代码时使用接口,该代码在实现它的每个类中应该有不同的行为。