2010-10-21 2 views
0

Во-первых, это вопрос объектно-ориентированного программирования и не относится ни к одному языку в частности.Сомнение в реализации интерфейсов

Это довольно смущает меня. Этот инцидент произошел @ работа, и я был слишком застенчив, чтобы прояснить это с моими коллегами, поскольку это указывает на плохое понимание объектно-ориентированного программирования с моей стороны. Итак, вот этот инцидент:

Существует класс A, который реализует интерфейс I. Этот интерфейс имеет метод M. Класс A определил тело или, скорее, реализацию этого метода. Теперь у меня есть инструмент, с помощью которого я могу узнать, какой другой класс или программа использует, или, другими словами, вызывает метод класса A -> M. Когда я использовал этот инструмент, он не возвращал никаких результатов; Указанием, которое я взял как класс, является метод вызова M.

Когда я поделился своими наблюдениями со старшим коллегой, он просто отправился в интерфейс I -> метод М и использовал этот инструмент. Это принесло немало результатов. Он сказал мне, что это классы или методы, которые называют метод М, и попросил меня продолжить.

Этот результат, очевидно, представляет собой список тех классов, которые реализуют интерфейс I. Но я не понял, что это набор классов или методов, которые вызывают метод класса А -> М. Так как я уверенно сказал моему коллеге, что ни один класс не называет метод М, после того, как он показал мне список результатов, я был слишком смущен, чтобы спросить его, как это результат, который я ищу.

Любая идея, о чем говорит мой коллега?

С уважением, Митхун

+7

Вам наверняка придется позаботиться о том, чтобы застенчиво задавать вопросы своим коллегам. И не обманывайте себя, они уже знают, насколько вы знаете. – JeremyWeir

ответ

6

Вся идея наличия интерфейсов для классов заключается в том, что интерфейсы будут использоваться для передачи экземпляров. Это обеспечивает свободную связь. Теперь, так как вы на самом деле не пройти класс вокруг, но интерфейс специфичный для данного класса, например:

void someMethod (ISomeClass intobject) 

вместо

void someMethod (SomeClass obj) 

так, когда вы пытаетесь вызвать метод в ISomeClass/SomeClass называется myMethod в someMethod, это на самом деле

intobject.myMethod() 

Он сть, все обычаи myMethod отсылают к ISomeClass и на самом деле не SomeClass

Edit: Может быть, его только мне, но я всегда считаю, что, когда вы не понимаете что-то, то лучше открыть рот, чтобы задать вопрос и быть ошибочно ошибочно, чем держать его запертым и доказать, что он один!

+0

Это забавное обращение очень популярной (и острой) цитаты. :) – EricBoersma

+0

@EricBoersma :-) Yup..и просто подумал, что по крайней мере в этом контексте это имело больше смысла таким образом – InSane

5

Я думаю, что вы должны спросить своего парня, что происходит. Вы не должны бояться признаться, что не знаете; нет ничего плохого в том, чтобы не знать, если вы учитесь на этом. Я все время ошибаюсь, и я нисколько не смущен этим, если я могу перейти к следующему шагу и чему-то научиться.

Я думаю, что вы видите, что ничего не использует класс A -> M, но существуют другие реализации I, которые используют M. Инструмент, найденный там, где M используется другими реализациями.

1

Когда я использовал этот инструмент, он не дал никаких результатов; Показателем, который я принимал как класс, является метод вызова M.

Не означает ли это, что результаты?

Но то, что я не понимаю, что, как это множество классов или методов, которые требуют класса А -> Метод М.

Это действительно то, что означают результаты?

Как этот инструмент работает? Что означают результаты? Не уверен, что это OOP, который вы не понимаете, или просто этот волшебный инструмент?

Смежные вопросы