Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2015, 21:44   #1
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
По умолчанию Отсуствие override у наследников интерфейсов

Почему так? Вот учебный код:
Код:
namespace Interfaces
{
    class DerivedClass : Interface1, Interface2
    {
        public void Method1()
        {
            Console.WriteLine("Реализация метода Method1() из Interface1");
        }

        public void Method2()
        {
            Console.WriteLine("Реализация метода Method2() из Interface2");
        }
    }
}
Ведь у интерфейсов то только абстрактные методы внутри. И класс, который реализует тот или иной интерфейс, переопределяет его. Когда происходит реализация чисто абстрактного класса (не интерфейсного типа), то override пишется, а когда наследуется интерфейс можно не писать? Почему?

Последний раз редактировалось Stilet; 11.03.2015 в 22:24.
hoz вне форума Ответить с цитированием
Старый 19.02.2015, 21:55   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Какая библиотека? Хотя-бы инклюд сообщите. Вообще офигели.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 19.02.2015, 21:58   #3
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

Цитата:
Ведь у интерфейсов то только абстрактные методы внутри.
нету методов у них, нечего оверрайдить.
lomastr_ вне форума Ответить с цитированием
Старый 19.02.2015, 22:14   #4
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Цитата:
Какая библиотека? Хотя-бы инклюд сообщите. Вообще офигели.
Помилуйте, видно же, что учебный пример)

А по сути, просто синтаксис таков. Просто мужики сели и решили что для интерфейсов писать override не надо)
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 19.02.2015, 22:21   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Да Смит просто злоупотребляет своей зарплатой и путает C# с С++.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.02.2015, 22:24   #6
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
По умолчанию

Цитата:
Сообщение от lomastr_ Посмотреть сообщение
нету методов у них, нечего оверрайдить.
Тогда почему абстрактные классы оверрайдятся? Там ведь тоже ничего нету по сути.
hoz вне форума Ответить с цитированием
Старый 19.02.2015, 22:25   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
мужики сели и решили что для интерфейсов писать override не надо)
По-моему это правило везде распространено, а не только с C#
Цитата:
почему абстрактные классы оверрайдятся?
Классы и интерфейсы это разные типы системы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.02.2015, 22:44   #8
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

Цитата:
Там ведь тоже ничего нету по сути.
есть .
lomastr_ вне форума Ответить с цитированием
Старый 11.03.2015, 21:03   #9
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

На самом деле я согласен с автором. Это как-то странно, когда по сути одни и те же действия описываются совершенно по-разному.
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 12.03.2015, 01:12   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от New man Посмотреть сообщение
На самом деле я согласен с автором. Это как-то странно, когда по сути одни и те же действия описываются совершенно по-разному.
нет, вы путаете, это разное.

класс это тип сущности.
интерфейс лишь набор правил.

в дотнете же самом, для интерфейсов лишь идет соответствие что этот метод относится к интерфейсу.(на практике на уровне IL-кода у них могут быть еще и названия в итоге разные, у метода интерфейса и у метода реализации)
в классах же вы замещаете старый метод, новым. у интерфейсов никакого замещения нет. вот и нет override, что логично.
интерфейсы не расширяют класс, они накладывают требования.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
разница между new и override sinestro C# (си шарп) 3 12.04.2014 16:58
Коллекция наследников класса определенного типа. KorPaEv C# (си шарп) 2 11.05.2012 13:26
override Классы Xsires Общие вопросы Delphi 5 16.03.2012 19:17
Отсуствие видимых причин Form_13 Паскаль, Turbo Pascal, PascalABC.NET 19 13.10.2011 17:22
С# Отображение классов-наследников в DataGridView Evil_Crab Помощь студентам 0 25.02.2011 15:15