Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для Salim_Destroyer
20 / 11 / 4
Регистрация: 20.05.2016
Сообщений: 84

Чем лучше "Интерфейсы" от "Абстрактных или Переопределяемых методов"?

01.08.2018, 01:02. Показов 1340. Ответов 9
Метки нет (Все метки)

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

Хотя как я понял иногда интерфейс нужен только, чтобы получить доступ только методам как тут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
    interface IsomeInterface
    {
        int[] sortArray(int[] array);
        void showArray(int[] array);
    }
    class someClass : IsomeInterface
    {
 
        public void showArray(int[] array)//реализация метода
        {
            foreach (int x in array)
                Console.WriteLine("[" + x + "]");
        }
 
        public int[] sortArray(int[] array) реализация метода
        {
            Array.Sort(array);
            return array;
        }
        public void someText()
        {
            Console.WriteLine("Hello world!");
        }
    }
 
    class Program
    {
        static void Main()
        {
            Random rnd = new Random();
            int[] array = new int[rnd.Next(0, 10)];
            for (int i = 0; i < array.Length; i++)
            {
                array[i] = rnd.Next(0, 100);
            }
 
            someClass a1 = new someClass();                        
            a1.sortArray(array);
            a1.showArray(array);
            a1.someText();
 
            for (int i = 0; i < array.Length; i++)
            {
                array[i] = rnd.Next(0, 100);
            }
 
            IsomeInterface myInterface = a1;
            myInterface.sortArray(array);//я вот про эти доступы только методам которые описаны в  
            myInterface.showArray(array);// интерфейсе IsomeInterface
            //****myInterface.someText();**** не получится так как в интерфейсе IsomeInterface нету такого метода
            Console.ReadLine();            
        }
    }
Так вот мой вопрос зачем нужны интерфейсы, если мы можем (abstract,virtual, override) переопределять метод и даже в каждом дочернем классе можем этот метод по другому реализовать, как я понял интерфейсы нужны, чтобы тупо классу приказывать реализовать его методы и просто тупо получать доступ к тем методам, которые описаны в интерфейсе?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.08.2018, 01:02
Ответы с готовыми решениями:

Чем интерфейсы отличаются от абстрактных классов
Что интерфейс может содержать(или же если проще сказать - что не может содержать) в отличии от абстрактного класса? И верно ли следующее...

С каких языков лучше начинать, с абстрактных или низкоуровневых?
В программировании я ноль. Опыта нет, но очень хочу им стать. С математикой тоже плохо один год болел, весь 6 класс практически. Но желание...

Изучение механизма наследования классов и полиморфизма, виртуальных методов, а также абстрактных методов и классов.
ЛАБОРАТОРНАЯ РАБОТА №3 Цель работы Изучение механизма наследования классов и полиморфизма, виртуальных методов, а также абстрактных...

9
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
01.08.2018, 04:12
Цитата Сообщение от Salim_Destroyer Посмотреть сообщение
интерфейсы нужны, чтобы тупо классу приказывать реализовать его методы и просто тупо получать доступ к тем методам, которые описаны в интерфейсе?
Да, именно так. Ну и плюс ко всему, класс может реализовывать несколько интерфейсов, а наследоваться только от одного класса.
0
Заблокирован
01.08.2018, 08:10
Shogun31337, еще по поводу интерфейсов.
Когда следует использовать интерфейсы:
1. Если нам надо определить функционал для группы разрозненных объектов, которые могут быть никак не связаны между собой.
2. Если мы проектируем небольшой функциональный тип
0
Эксперт JS
6497 / 3908 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
01.08.2018, 08:56
Стив Роджерс, там мутно описано.

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

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


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

Недостаток абстрактного класса, который часто перекрывает все преимущества - можно наследоваться от единственного абстрактного класса.
А реализовывать несколько интерфейсов сразу можно.
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
01.08.2018, 14:05
Цитата Сообщение от Стив Роджерс Посмотреть сообщение
еще по поводу интерфейсов
Да, я в курсе, что они нужны для слабосвязных объектов.
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
01.08.2018, 14:35
Цитата Сообщение от Salim_Destroyer Посмотреть сообщение
зачем нужны интерфейсы
даную тему пора закреплять... (кого я обманываю?! не спасет )

15.02.2013
Интерфейсы зачем их использовать - C#/.NET 4.x

06.07.2018
Абстрактные классы и интерфейсы - C#

28.01.2018
Интерфейсы - их реальное применение в работе - C#

11.01.2018
Абстрактный класс или Интерфейс - C#

20.01.2017
Когда уместно использовать интерфейс? - C#
1
01.08.2018, 14:49

Не по теме:

Цитата Сообщение от Wolfdp Посмотреть сообщение
даную тему пора закреплять...
Да уж. Этот вопрос появляется с завидной периодичностью.

Цитата Сообщение от Wolfdp Посмотреть сообщение
(кого я обманываю?! не спасет )
Ответ на вопрос "как передать данные из формы в форму?" давным давно в FAQ'е лежит. А вопрос все равно постоянно возникает... Поиск? Не, не слышали...

0
01.08.2018, 14:57

Не по теме:

Shogun31337, те кто задает подобные вопросы, желают услышать ответ по быстрее. И им абсолютно все равно на поиск, правила форума и т.д.

0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
01.08.2018, 15:31

Не по теме:

Цитата Сообщение от Стив Роджерс Посмотреть сообщение
желают услышать ответ по быстрее.
Если бы реально хотели "побыстрее", то уже 100 раз нагугли/разобрали. Распылятся не буду, ибо тут начиная от "сделайте за меня" и "хачю уже писать ацкие праграмы!!", до банальной несистематическости обучения.



ТСу -- если не понятно, приймите пока как дожное. Вообще, если microsoft что-то ввело, то оно 100% использовалось. А если ему и есть логичная альтернатива, то старая версия оставлена для обратной совместимости.

Конкретно интерфейсы 100% поймете, когда столкнетесь с внедрением зависимостей или юнит тестами.
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
01.08.2018, 22:10
Цитата Сообщение от Wolfdp Посмотреть сообщение
Конкретно интерфейсы 100% поймете, когда столкнетесь с внедрением зависимостей или юнит тестами.
Ещё раньше - когда про паттерны услышит. Ибо паттерны - модно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.08.2018, 22:10
Помогаю со студенческими работами здесь

Чем XPath лучше других методов работы с XML?
Здравствуйте. Не раз натыкался на темы, где у автора возникали проблемы с работай с XML, часто видел ответ :&quot;Используй лучше xpath...

Переопределение абстрактных методов
Добрый день! Вопрос следующий: в подклассе необходимо переопределить абстрактный метод суперкласса, нужно сменить модификатор доступа с...

Защита абстрактных методов
Всем привет. Забавная вещь получается. Как мы знаем, все абстрактные методы являются публичными по умолчанию, в том же интерфейсе, но...

Delphi. Использование абстрактных методов
Здравствуйте. Совсем недавно изучаю ооп в Delphi. И при написании программы возникла ошибочка. Может кто объяснить ну и помочь немножечко ...

ООП, понимание абстрактных классов/методов и т.п
Работаю программистом и столкнулся с тем, что на проекте отказались от абстрактного класса в пользу интерфейса, но я не совсем понимаю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru