Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
PallarisНужно четко понимать, что делаешь, и как код будет использоватьсяТС за это и топит. Нафига оператор new для метода, если он то применяется то нет и компилятор молчит? Я сам никогда не мешаю интерфейсы и обычные методы класса. И за то чтобы была однозначность. Либо переопределяем метод наследнике, либо нет..... Нельзя. Тогда будет простой хак класса. Imho ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 09:06 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Дмитрий МухAntonariyПоэтому с точки зрения исходников пропущено... это неверно. Где код реализации в наследнике? Нет его, он в родителе. А что тогда по твоему в этом случае: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Наследник реализует, или не реализует, или частично реализует интерфейс? наследник наследует, дурня ты кусок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 09:39 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
в случае с override - переопределяет поведение, но не сигнатуру. в случае с new - переопределяет и поведение и сигнатуру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 09:43 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123Нафига оператор new для метода, если он то применяется то нетчто значит "то нет"? в зависимости от погоды что ли? Petro123 и компилятор молчит?А о чем он должен говорить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 09:45 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Antonariyв случае с override - переопределяет унаследованное поведение, но не сигнатуру.поправил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 09:46 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
PallarisМинимум-то минимум, но чревато. Нужно четко понимать, что делаешь, и как код будет использоваться Ну вообще тот же Рихтер утверждает, что EIMI нужно избегать, наколько это возможно, и использовать, только когда другого выхода нет, потому как потенциальных граблей в нем больше, чем плюсов. В это плане у EIMI с new много общего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 09:51 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Antonariy, Я одним оператором переопределяю метод в наследнике. А внутри хочу вызываю базовый Папы метод, хочу не вызываю. Получается один оператор в наследнике и один в базовом virtual. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 09:56 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyА о чем он должен говорить?что вызов будет базового хотя оператор new ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 09:59 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyА о чем он должен говорить?что вызов будет базового хотя оператор new. Задача не выполнена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 10:00 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123AntonariyА о чем он должен говорить?что вызов будет базового хотя оператор new. Задача не выполнена. Вообще-то new как раз и предназначен, чтобы компилятор молчал. Потому как всё, что делает этот new - это просто тупо подавление предупреждения компиляции. Скрытие метода вполне возможно и без new, но тогда компилятор будет выдавать предупреждения. Больше никакой другой магии в этом new нет. А если программист сам собственноручно поставил в перекрытый метод new - значит, он вполне отдает себе отчет в том, что сделал, и чем это чревато. Ну, по крайней мере, наверное, разработчики компилятора так думают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 10:05 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123AntonariyА о чем он должен говорить?что вызов будет базового хотя оператор newЕсли ты сам сокрыл (вот так правильно это методика называется - shadowing) базовый метод новым через new, а потом сам же вызвал из нового базовый, то причем тут компилятор? Ты в бессознательном состоянии код пишешь что ли? С какой стати компилятор должен тебе сообщать то, что ты сам же и делаешь? Может он еще должен арифметические операции комментировать? "Ахтунг, использован оператор +, следовательно произойдет сложение, а нихрена не вычитание!!11адин" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 10:08 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Сон Веры ПавловныPetro123пропущено... что вызов будет базового хотя оператор new. Задача не выполнена. Вообще-то new как раз и предназначен, чтобы компилятор молчал.Вообще-то вот, что по этому поводу в MSDN написано: https://docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/declared-elements/shadowing The main purpose of shadowing is to protect the definition of your class members. The base class might undergo a change that creates an element with the same name as one you have already defined. If this happens, the Shadows modifier forces references through your class to be resolved to the member you defined, instead of to the new base class element. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 10:24 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyСон Веры Павловныпропущено... Вообще-то new как раз и предназначен, чтобы компилятор молчал.Вообще-то вот, что по этому поводу в MSDN написано: https://docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/declared-elements/shadowing The main purpose of shadowing is to protect the definition of your class members. The base class might undergo a change that creates an element with the same name as one you have already defined. If this happens, the Shadows modifier forces references through your class to be resolved to the member you defined, instead of to the new base class element. Да, только этот shadowing вполне делается и без new. Вот код, с которого всё началось: Код: 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. IL-код и метаданные метода Foo.SayWord: Код: 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. Теперь убираем new: Код: c# 1. 2. 3. 4. 5. 6. 7. Код: 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. - как говорится, найдите 10 отличий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 10:38 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Сон Веры Павловны, Я не пойму. Всех ЯП задача чтобы компилятор замолчал решается аннотациями и другими средствами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 10:38 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123Сон Веры Павловны, Я не пойму. Всех ЯП задача чтобы компилятор замолчал решается аннотациями и другими средствами. Типичное применение new по мнению разработчиков такое: юзал ты какую-то библиотеку (1й слой), наследовался от ее классов, дополнял наследников своими методами, создавая промежуточный слой (2й), и этот слой пошел в дальнейшее использование другими разработчиками (3го слоя). А тут фигакс - в библиотеке появился метод, имеющий такое же название, как у тебя в наследнике, но с другой сигнатурой, другим функционалом, а на твоего наследника уже куча говнокода, использующего этот метод, в 3м слое накручено. Получается несовместимость, и чтобы не переименовывать метод, заставляя волком выть разработчиков 3го слоя, тебе дается возможность сокрыть нахрен метод 1го слоя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 11:01 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyТипичное применение new по мнению разработчиковтолько в шарпе? Antonariyюзал ты какую-то библиотеку (1й слой),пример mdac Antonariyсоздавая промежуточный слой (2й),пример ADOCommand обертка. Antonariyразработчиками (3го слояпример, отдали клиенту. AntonariyА тут фигакс - в библиотеке появился метод, имеющий такое же название, как у тебя в наследнике, но с другой сигнатурой, Подробнее про Фигас. Как это случилось что появился наследник без компиляции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 11:24 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyДмитрий Мухпропущено... А что тогда по твоему в этом случае: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Наследник реализует, или не реализует, или частично реализует интерфейс? наследник наследует, дурня ты кусок. Что это значит, умника щепотка? Реализация метода B в наследнике полностью своя, метода A унаследованная. Как ты трактуешь такую ситуацию, когда половина реализации своя, а половина от базового класса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 11:42 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомhVosttЗаменить просто так работу какого-то метода... Ога, прикинь? Или надо письмо разрабы писать, можно я унаследуюсь, мне там ерунда нужна. Или у тебя опять флудо-генератор включился? Что характерно, к концу ветки - риск выставить себя дебилом ниже обычного; но знаешь, хвост, он ещё есть.))) Надо понимать, что если ты хочешь изменить ни с того ни с сего работу одного метода, когда это не было изначально заложено разработчиком класса -- ты определённо собираешься написать говнокод. Это матьево железобетонный факт. То, что ты не хочешь смириться с этим, пытаясь перевести всё на плоскость флуда, означает, что ты не хочешь разобраться, а хочешь тупо впарить нам какую-то лажу. Ничего страшного, я не против. Впаривай ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 11:43 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttкогда это не было изначально заложено разработчиком класса -- ты определённо собираешься написать говнокод. Вся JAVA - говнокод? Все шарповские методы расширения - говнокод? Оператор new - говнокод? Очень сложно писать нормальный код, которым можно было бы гордиться, когда повсюду... Говнокод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 12:52 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомВся JAVA - говнокод? В яве все методы виртуальные, выше уэто упоминалось. Агнец за бортомВсе шарповские методы расширения - говнокод? Тоже мимо, методы расширения не включаются в vtable класса, и не формируют его контракт. Агнец за бортомОператор new - говнокод? В 90% случаев - да. Особенно если вся кодовая база - собственная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 13:18 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Сон Веры ПавловныВ 90% случаев - да. Особенно если вся кодовая база - собственная.+1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 13:25 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом, Ты зря бомбишь. Речь идёт о классе и его методах. О принципах SOLID уже сказали. О декораторе уже сказали. Это всё с точки зрения проектирования, не "впихнуть невпихнуемое". К вопросу, типа клал я на все эти принципы, как мне нагавнякать? Я отвечаю -- да хоть копипастом. Пофигу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 13:40 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомОператор new - говнокод? Бред вообще какой-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 13:40 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомОчень сложно писать нормальный код, которым можно было бы гордиться, когда повсюду... Говнокод. Если даже не пытаться и не думать головой, то будет 100% говнокод. А идеального не существует. Это известно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 13:41 |
|
||
|
|

start [/forum/topic.php?fid=20&msg=39720793&tid=1398780]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 264ms |
| total: | 418ms |

| 0 / 0 |
