Я знаю, что это очень простой вопрос, но интервьюер спросил меня очень трюк, и я был беспомощным: (
Я знаю только материальное или теоретическое определение интерфейса, а также реализовал его во многих проектах, над которыми я работал. Но я действительно не понимаю, почему и как это полезно.
Я также не понимаю одну вещь в интерфейсе. например, мы используем
conn.Dispose();
в блоке finally. Но я не вижу, что класс реализует или наследует IDisposable
интерфейс (SqlConnection
) класс I. Мне интересно, как я могу просто назвать имя метода. Также в том же, я не понимаю, как работает метод Dispose, потому что нам нужно реализовать тело функции с нашей собственной реализацией для всех методов интерфейса. Итак, как интерфейсы принимаются или называются контрактами? Эти вопросы продолжались до сих пор, и, честно говоря, я никогда не видел ни одной хорошей нити, которая могла бы объяснить мои вопросы таким образом, чтобы я мог понять.
MSDN как обычно выглядит очень страшно, и там нет единой строки (люди, любезно извините, кто находится на высоком уровне развития, я твердо чувствую, что любой код или статья должны доходить до ума любого, кто его видит, следовательно, как и многие другие скажем, MSDN не используется).
Интервьюер сказал:
У него есть 5 методов, и он счастлив реализовать его в классе напрямую, но если вам нужно перейти на абстрактный класс или интерфейс, какой из них выбрать и почему? Я ответил ему на все материалы, которые я читал в разных блогах, говоря о преимуществах и недостатках как абстрактного класса, так и интерфейса, но он не убежден, он пытается понять "Почему интерфейс" в целом. "Почему абстрактный класс" вообще, даже если я могу реализовать одни и те же методы только один раз, а не изменять его.
Я не вижу места в сети, я мог бы получить статью, которая бы четко объяснила мне об интерфейсах и его функционировании. Я один из тех многих программистов, которые до сих пор не знают об интерфейсах (я знаю теоретические и методы, которые я использовал), но не удовлетворены тем, что я это ясно понял.