【问题标题】:Doubt with the implementation of interfaces怀疑接口的实现
【发布时间】:2010-10-21 16:09:09
【问题描述】:

首先,这只是一个面向对象的编程问题,并不特别适用于任何语言。

这让我很尴尬。这件事发生在@work,我太害羞了,不敢和我的同事澄清这一点,因为这表明我对面向对象编程的理解很差。所以这是事件:

有一个实现接口 I 的类 A。这个接口有一个方法 M。类 A 已经定义了这个方法的主体或者更确切地说是实现。 现在我有了一个工具,我可以用它找出其他类或程序使用了哪个,或者换句话说,调用了 Class A -> method M。当我使用这个工具时,它没有返回任何结果;我认为没有类的一个指示是调用方法 M。

当我与一位资深同事分享我的观察时,他只是进入界面 I -> 方法 M,并在此使用工具。它返回了很多结果。他告诉我这些是调用方法 M 的类或方法,并让我继续。

这个结果显然是实现接口 I 的那些类的列表。 但是我不明白的是,这组调用A类->方法M的类或方法是怎么回事。由于我自信地告诉我的同事没有类调用方法M,在他给我看结果列表后,我不好意思问他我要的结果如何。

知道我的同事在暗示什么吗?

问候, 米通

【问题讨论】:

  • 你绝对应该克服羞于向同事提问的问题。不要自欺欺人,他们已经知道你知道多少了。

标签: class interface class-design oop


【解决方案1】:

为类提供接口背后的整个想法是,接口将用于传递实例。这是为了提供松散耦合。 现在,由于您实际上并没有传递类,而是传递特定于该类的接口, 例如:

void someMethod (ISomeClass intobject)

而不是

void someMethod (SomeClass obj)

所以当你试图在ISomeClass / SomeClass 中调用一个在someMethod 中称为myMethod 的方法时,实际上是

 intobject.myMethod()

因此,myMethod 的所有用法都指回ISomeClass,而不是真正指SomeClass

编辑:也许只有我一个人,但我始终相信,当你不明白某事时,与其闭嘴证明自己是傻瓜,不如张开嘴问问题并被误认为傻瓜!

【讨论】:

  • 这是一个非常流行(且令人心酸)的引语的有趣反转。 :)
  • @EricBoersma :-) 是的..我只是认为至少在这种情况下,这样更有意义
【解决方案2】:

我认为你应该问问你的家伙发生了什么事。你不应该害怕承认你不知道;如果你从中学习,不知道没有什么错。我一直都是错的,如果我能进入下一步并学到一些东西,我一点也不感到尴尬。

我认为您所看到的是没有使用 Class A -> M,但是 I 的其他实现使用了 M。该工具找到了其他实现正在使用 M 的位置。

【讨论】:

    【解决方案3】:

    当我使用这个工具时,它没有返回任何结果;我认为没有类的一个指示是调用方法 M。

    没有结果是否意味着?

    但我不明白的是,这组调用 A 类 -> 方法 M 的类或方法的集合。

    结果真的是这个意思吗?

    这个工具是如何工作的?结果意味着什么?不知道是你不懂的OOP,还是这个神奇的工具?

    【讨论】:

      猜你喜欢
      • 2013-10-09
      • 1970-01-01
      • 1970-01-01
      • 2018-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-06
      • 1970-01-01
      相关资源
      最近更新 更多