В чем разница между интерфейсом и классом и почему мне следует использовать интерфейс, если я могу реализовать методы непосредственно в классе?

Я знаю, что это очень простой вопрос, но интервьюер задал мне очень хитрый способ, и я был беспомощен :(

Я знаю только материальное или теоретическое определение интерфейса, а также реализовал его во многих проектах, над которыми работал. Но Я действительно не понимаю, почему и как это полезно.

Я также не понимаю одну вещь в интерфейсе.То есть, например, мы используем

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

MSDN, как обычно, выглядит очень устрашающе, и ни одна строчка там не ясна ( Ребята, прошу прощения у тех, кто занимается высокоуровневой разработкой, я твердо убежден, что любой код или статья должны дойти до ума любого, кто их увидит, поэтому как многие другие говорят, MSDN бесполезен).

Интервьюер сказал:

У него есть 5 методов, и он счастлив реализовать их непосредственно в классе, но если вам нужно использовать абстрактный класс или интерфейс, какой из них вы выберете и почему? Я ответил ему на все материалы, которые я читал в различных блогах, говоря о преимуществах и недостатках как абстрактного класса, так и интерфейса, но он не убежден, он пытается понять «Почему интерфейс» в целом. «Зачем вообще абстрактный класс», даже если я могу реализовать одни и те же методы только один раз и не собираюсь их менять.

Я не вижу нигде в сети, я мог бы получить статью, которая объяснила бы мне ясно об интерфейсах и их функционировании. Я один из тех многих программистов, которые до сих пор ничего не знают об интерфейсах (я знаю теорию и методы, которые я использовал), но не удовлетворены тем, что я ясно это понял.

106
задан Olivier Rogier 2 October 2019 в 07:34
поделиться