C#
Может ли это быть тревожным звоночком к тому что я тупой?
Я весь день пытаюсь понять как и для чего использовать интерфейсы в C# но так ничего и не понял... Это вообще считается сложной темой или нет?
Почитай про апкаст.
Легче понять по примеру.
Нам необходимо создать класс, который к примеру будет производить запись. Мы предполагаем, что запись возможна: просто отображение на дисплее, запись в файл, запись в БД.
Создаем интерфейс, в нем будет метод, к примеру write, без параметров.
Создаем 3 класса, которые реализуют интерфейс. В этик классах создаем метод Write.
В итоге имеет что то такое
НашИнтерфейс I = new КлассЗаписьБД;
I.Write() - будет запись в БД
I = new КлассЗаписьФайла
I.Write() - будет запись в файл
I = new КлассОтображениеНаДисплей
I.Write() - отобразит на дисплей.
Можно вещи гораздо более сложные делать.
Легче понять по примеру.
Нам необходимо создать класс, который к примеру будет производить запись. Мы предполагаем, что запись возможна: просто отображение на дисплее, запись в файл, запись в БД.
Создаем интерфейс, в нем будет метод, к примеру write, без параметров.
Создаем 3 класса, которые реализуют интерфейс. В этик классах создаем метод Write.
В итоге имеет что то такое
НашИнтерфейс I = new КлассЗаписьБД;
I.Write() - будет запись в БД
I = new КлассЗаписьФайла
I.Write() - будет запись в файл
I = new КлассОтображениеНаДисплей
I.Write() - отобразит на дисплей.
Можно вещи гораздо более сложные делать.
Isroil Mamadaliev
То есть грубо говоря интерфейс это своего рода супер универсальный метод, который можно применить к любому классу, если тот унаследует этот интерфейс... Но реализовывать этот метод мы должны уже в самих классах в зависимости от того что нам нужно сделать... Как-то так?
Юрий Дёмин
Думаю так будет более понятно.


Ну я понимаю Интерфейс как какой то специализированный Класс заточенный под определенные типы данных или операции.
Как использовать? Написано в MSDN https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/keywords/interface
Для чего? Ну например вы пишите какой то Кулькулятор. И внезапно обнаруживаете что в этом Кулькуляторе постоянно используется одна и та же формула (например расчет процентов по займу: Сумма процентов по займу = Сумма займа * Процентная ставка / 365 (366) дней * Количество дней пользования займом). Её можно реализовать в Классе, но лучше будет если это будет Интерфейс где описаны все переменные (их типы, проверки на вшивость и соответствующие сообщения чтобы Пользователь не пихал туда исключения) и собственно сама Формула.
Прошу не кидать в меня тухлые помидоры написал как я это понимаю без гуглов.
Как использовать? Написано в MSDN https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/keywords/interface
Для чего? Ну например вы пишите какой то Кулькулятор. И внезапно обнаруживаете что в этом Кулькуляторе постоянно используется одна и та же формула (например расчет процентов по займу: Сумма процентов по займу = Сумма займа * Процентная ставка / 365 (366) дней * Количество дней пользования займом). Её можно реализовать в Классе, но лучше будет если это будет Интерфейс где описаны все переменные (их типы, проверки на вшивость и соответствующие сообщения чтобы Пользователь не пихал туда исключения) и собственно сама Формула.
Прошу не кидать в меня тухлые помидоры написал как я это понимаю без гуглов.
Isroil Mamadaliev
я не люблю сайт майкрософт, там все сложно и непонятно ничего... Я написал комментарий (к ответу выше) как я понял интерфейсы, это конечно максимально глупо и нелепо но все же я хоть примерно приблизился к истине?
Может ты не так смотришь на проблему
Тренируйтесь и все обязательно получиться!
Не поняли сегодня, значит поймете завтра или послезавтра. Не нужно спешить
Не поняли сегодня, значит поймете завтра или послезавтра. Не нужно спешить
Все нормально. Может быть путаница с абстрактными классами. Попробуй сделать метод, принимающий параметр типа интерфейса, и повызывать его с различными реализациями. Ты увидишь, что твой метод сможет работать с объектами различных классов, а также структур, даже не связанными иерархией наследования.
Isroil Mamadaliev
Спасибо, попробую... Но ты полностью прав я не понимаю зачем нужны интерфейсы когда есть абстрактные классы.
Единственный вывод который я сделал это то что интерфейсы нужно в следующей ситуации: У нас есть 2 класса, которые вообще между собой никак не связаны: например класс Яблоко и класс автомобиль. Очевидно что использовать абстрактный класс в такой ситуации это нелепо так как классы абсолютно разные... Но у них есть одно общее свойство-цвет. Поэтому мы может реализовать интерфейс, который содержит метод который реализует вывод на консоль цвета этих обьектов. После чего оба класса просто наследуют данный интерфейс и можно будет вызвать метод, который показывает цвет этих обьектов. Это примерно так работает или то что я написал это бред?
Единственный вывод который я сделал это то что интерфейсы нужно в следующей ситуации: У нас есть 2 класса, которые вообще между собой никак не связаны: например класс Яблоко и класс автомобиль. Очевидно что использовать абстрактный класс в такой ситуации это нелепо так как классы абсолютно разные... Но у них есть одно общее свойство-цвет. Поэтому мы может реализовать интерфейс, который содержит метод который реализует вывод на консоль цвета этих обьектов. После чего оба класса просто наследуют данный интерфейс и можно будет вызвать метод, который показывает цвет этих обьектов. Это примерно так работает или то что я написал это бред?
Илья Саено"к"
Да, примерно так это и работает ????
Илья Саено"к"
Плюс еще у интерфейсов есть множественное наследование, что дает некоторые дополнительные возможности по их компоновке в более сложные интерфейсы.
Прежде чем учить язык надо сначала разобраться с ООП
Isroil Mamadaliev
так я и пытаюсь разобраться, интерфейсы являются частью ООП
Совсем нет
Похожие вопросы
- Психологический тест в школе.. . "Тревожные звоночки"...
- Не считаете ли Вы землетрясение в Новой Зеландии тревожным звоночком для сейсмологов?
- Если у эзотерика отдельное регулярно становится одним целым, это тревожный звоночек?)
- Выучил новое слово «деноминация». Поиск в яндексе выдает «рубля» и «в России 2022». Это тревожный звоночек и чего ждать?
- Пропало обояние, тревожный ли это звоночек или просто насморк
- Медведева попросили легализовать однополые браки. Это что первый звоночек?
- Как проявляется ревность старших детей? Т.е. какие первые звоночки? И можно ли СОВСЕМ свести на нет детскую ревность?
- Скажите, данная ситуация была бы для вас «звоночком» в отношениях?
- Ассоциации, возникающие с образом ворона.. . какие? Всегда ли они страшны... тревожны? А почему?
- тревожное состояние???