Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Если subClass наследуется от parentClass, которой реализует iParentable , то вопрос: считается ли, что subClass реализует iParentable ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2018, 16:09 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом, да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2018, 16:10 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Еще мнения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2018, 16:16 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом, Какие еще могут быть мнение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2018, 16:26 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Roman Mejtes, Агнец за бортомсчитается ли, Ну, хотя бы вопрос - кем считается? ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2018, 16:29 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомсчитается ли, что subClass реализует iParentable ???он не считается, он реализует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2018, 16:40 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
А мне кажется, парни, что вы не шарите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2018, 17:01 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомА мне кажется, парни, что вы не шарите.Значит у тебя есть основания считать иначе, ну поделись же, не томи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2018, 17:14 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Что будет в консоли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2018, 17:20 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
игры с new - штука вредная но пример демонстрирует, что класс Foo реализует iSpeak а детали реализации - это внутреннее дело класса Foo ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2018, 17:52 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомShocker.Pro, Что будет в консоли? Тоже мне, бином Ньютона. "i am a parent" будет, потому как перекрытый унаследованный метод метод уже не является виртуальным, и не относится к реализации ISpeak. А поскольку объявленный тип - интерфейс, то вызов (callvirt) будет делаться в соответствии с его таблицей методов. В IL это видно вполне хорошо: Код: 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. И подобное уже обсуждалось. Только вот какое отношение это всё имеет к утверждению, что класс, унаследовавший реализацию интерфейса от базового, не реализует интерфейс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2018, 17:56 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Сон Веры ПавловныТолько вот какое отношение это всё имеет к утверждению, что класс, унаследовавший реализацию интерфейса от базового, не реализует интерфейс? Мальчик открыл для себя модификатор new и решил нас этим удивить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2018, 18:30 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Дмитрий Мух, Думаю, просто попытался обойти запрет на переопределение невиртуального метода, но ничего не получилось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2018, 18:36 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Дмитрий МухСон Веры ПавловныТолько вот какое отношение это всё имеет к утверждению, что класс, унаследовавший реализацию интерфейса от базового, не реализует интерфейс? Мальчик открыл для себя модификатор new и решил нас этим удивить Тебя, вякающего из кустов - сложно чем-то удивить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2018, 18:53 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Shocker.ProДмитрий Мух, Думаю, просто попытался обойти запрет на переопределение невиртуального метода, но ничего не получилось Что значит обойти? new для этого и предназначен. Как это вообще должно выглядеть "обойти запрет"?)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2018, 18:55 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Сон Веры ПавловныТолько вот какое отношение это всё имеет к утверждению, что класс, унаследовавший реализацию интерфейса от базового, не реализует интерфейс? Ну а как это воспринять? Метод помечен new? Помечен. Работает? Нет. С virtual всё работает как надо. Как в JAVA живут без этой мути - решительно не ясно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2018, 18:57 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомЧто значит обойти? new для этого и предназначен. Как это вообще должно выглядеть "обойти запрет"?)) Местные собаководы на эту тему уже высказывались . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2018, 19:01 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомКак в JAVA живут без этой мути - решительно не ясно. Будет ясно при изучении соотв. матчасти. В яве все методы изначально виртуальные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2018, 19:02 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомДмитрий Мухпропущено... Мальчик открыл для себя модификатор new и решил нас этим удивить Тебя, вякающего из кустов - сложно чем-то удивить. Глупостью тут вообще кого-то сложно удивить. Кстати, а в прошлый раз не ты ли задавал подобные вопросы, но под другим ником? Очень на тебя похоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2018, 19:04 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Дмитрий МухГлупостью тут вообще кого-то сложно удивить Вот если бы УГ, промычал что-то сразу после скрина с кодом, тогда бы еще тебя и имело смысл послушать. Но так как ты выполз со своим говном после того, как Сон Веры Павловны всё разложил и дал ссылки на темы - цена твоим базарам - ровна тому, что у тебя прёт из-за всех дыр. Не слишком сложно для тебя? Модератор: Прошу умерить пыл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2018, 19:15 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом, может уже ответишь на вопрос: какое отношение это всё имеет к утверждению, что класс, унаследовавший реализацию интерфейса от базового, не реализует интерфейс? ИМХО надо ответить, а не прикрывать хамством свою глупость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2018, 20:42 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Roman MejtesАгнец за бортом, Какие еще могут быть мнение?subClass наследует iParentable ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 09:34 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
* наследует реализацию iParentable ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 09:35 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Можно ещё витиеватее сформулировать: Тип subClass наследует данные и функциональность существующего типа parentClass, в том числе и реализацию интерфейса iParentable. Вот только что от этого изменилось? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 10:45 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Antonariy, Да. Это коротко и понятно. Упрощает понимание перекрытия методов. imho ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 13:36 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Antonariy* наследует реализацию iParentable Получается, что мне надо "знать", устройство базового класса и каким образом "вот это вот всё" будет использоваться. Потому как фича языка "new" тут не работает. Что выглядит как баг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 15:33 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомПолучается, что мне надо "знать", устройство базового класса и каким образом "вот это вот всё" будет использоваться. Такая уж штука, это программирование - надо много чего знать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 15:36 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом, что тебе надо, никто пока не понял, на фига тебе вообще наследник, а не просто другая реализация интерфейса, или декоратор, или композиция? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 15:38 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Сон Веры ПавловныАгнец за бортомПолучается, что мне надо "знать", устройство базового класса и каким образом "вот это вот всё" будет использоваться. Такая уж штука, это программирование - надо много чего знать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 15:45 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом, Про new я не понял твой вопрос, а про то что надо знать знать всю цепочку наследования и да и нет одновременно. Ведь в памяти это как бы один объект который приводится as или (НовыйТип ) в любой другой из цепочки наследования. Все логично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 15:46 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом, Можно попробовать такую дорожную карту: - в моделировании обойтись без интерфейсов. - интерфейс добавить после обоснования необходимости оного. Например, для сериализации... Добавить "сбоку"))) новое поведение. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 15:50 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Сон Веры ПавловныАгнец за бортомПолучается, что мне надо "знать", устройство базового класса и каким образом "вот это вот всё" будет использоваться. Такая уж штука, это программирование - надо много чего знать. Я про Low Coupling , при чем тут "программирование - такая штука"? Я наследуюсь от класса, перекрываю метод с new - и думаю, что этого достаточно. Компилятор пропустит, окей. Но в рантайме, при приведении к интерфейсу - вызовется метод базового класса. Мне надо либо: 1. Указать явно, что наследник реализует требуемый интерфейс, что несколько "избыточно", как по мне. 2. Либо использовать virtual в базовом классе, который может быть не моим. 3. Либо привести объект к типу-наследнику, но это вообще бред. Какие еще варианты? Нету. Получается, что наследник "как бы реализует интерфейс, но как бы не до конца". Мутная тема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 16:23 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомМутная тема. Тебе явно не нужна реализация базового класса, а нужна другая, но при этом написать её для тебя несколько "избыточно". Действительно мутная тема ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 16:51 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомКомпилятор пропустит, окей.нет под рукой студии. Если вообще молчит, тогда согласен с мутной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 16:55 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Дмитрий МухТебе явно не нужна реализация базового класса, а нужна другая, но при этом написать её для тебя несколько "избыточно". "Зарекалась свинья в грязи валяться". Есть интерфейс, объявляет 15 методов. Есть класс А , который их реализует И мне нужен класс В , который будет вести себя как класс А , за исключением одного метода. Мне скопировать всю реализацию из А в В ? Ты нифига о контексте не знаешь, но советы даёшь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 16:57 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомДмитрий МухТебе явно не нужна реализация базового класса, а нужна другая, но при этом написать её для тебя несколько "избыточно". "Зарекалась свинья в грязи валяться". Есть интерфейс, объявляет 15 методов. Есть класс А , который их реализует И мне нужен класс В , который будет вести себя как класс А , за исключением одного метода. Мне скопировать всю реализацию из А в В ? Ты нифига о контексте не знаешь, но советы даёшь. Декоратор тебе в помощь, дружок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 17:09 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 17:13 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Дмитрий Мух, ну или сделай метод виртуальным уже и оверрайди как тебе угодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 17:15 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Дмитрий Мух, Это костыль. Который приходиться юзать из-за какого-то бага в архитектуре языка. И не дружок ты мне, **** ******. ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 17:17 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Гы, гы, вот ты сейчас прям так обидно подколол, я аж заплакал. Под стол небось упал, смеясь как чайка? Ладно, раз костыль, то ищи решение сам, а я понаблюдаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 17:21 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом, и не смей использовать декоратор, **** ******! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 17:23 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 17:51 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
дык все интрефейсы в байткоде есть абстрактные типы которых скрыли конструктор ( еслимненеизменяетпамять) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 17:52 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомИ мне нужен класс В , который будет вести себя как класс А , за исключением одного метода. Нет. Это тебе не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 20:58 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttАгнец за бортомИ мне нужен класс В , который будет вести себя как класс А , за исключением одного метода. Нет. Это тебе не нужно. )) тоже верно. У него чисто теоретический вопрос был. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 21:02 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомAntonariy* наследует реализацию iParentable Получается, что мне надо "знать", устройство базового класса и каким образом "вот это вот всё" будет использоваться. А ты как думал? Можно наследовать незнамо что, наугад, закрыв глаза? Или наследовать лишь то, что имеет единственный метод MakeFuckingGood? Агнец за бортомНо в рантайме, при приведении к интерфейсу - вызовется метод базового класса.Ты явно указываешь, что нужно вызвать метод интерфейса, этот метод реализован в базовом классе, он и вызывается. Если тебе нужен переопределенный метод класса-наследника, приводишь к типу наследника. С какой стати компилятор должен угадывать твои мысли, мол дергая метод наследника ты НА САМОМ ДЕЛЕ хочешь дернуть реализацию интерфейса? Агнец за бортомМутная тема.Мутная она лишь в том смысле, что ты сам не знаешь, какой метод тебе нужен - базовый или переопределенный. Агнец за бортомИ мне нужен класс В, который будет вести себя как класс А, за исключением одного метода. Так все-таки знаешь - переопределенный. Но с какого-то перепугу считаешь, что компилятор должен при обращении к интерфейсу выдавать тебе переопределенный метод. А с какого? Он к интерфейсу не относится от слова совсем. Это чисто метод класса-наследника, он лишь название имеет такое же, как метод интерфейса. Агнец за бортомКоторый приходиться юзать из-за какого-то бага в архитектуре языка.Это баг не языка, а твоего понимания языка. А тебе нужно следующее: Код: 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. При наличии virtual/override С2.Test связывается с интерфейсом. При наличии new С2.Test независим от интерфейса, это такой же самостоятельный метод класса как Test2. Запомни это и не возводи напраслину на язык. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 21:14 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Или вкратце: Переопределение методов поддерживает наследование. Перегрузка методов не поддерживает наследование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 21:20 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Соответственно тут: авторЕсли тебе нужен переопределенный перегруженный метод класса-наследника ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 21:21 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
И далее тоже налажал, под переопределенными перегруженные подразумевал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 21:23 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123)) тоже верно. У него чисто теоретический вопрос был. Да не нужно это ему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 21:27 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Дмитрий МухМожно ещё витиеватее сформулировать: Тип subClass наследует данные и функциональность существующего типа parentClass, в том числе и реализацию интерфейса iParentable. Вот только что от этого изменилось? По сравнению с тем, что написал я - ничего, лишь ненужного порожняка навалил. Если же сравнивать, что написал я, с тем, что написал ТС - "subClass реализует iParentable" - изменился смысл. Потому что subClass iParentable не реализует, его реализует parentClass, а subClass его наследует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 21:32 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyДмитрий МухМожно ещё витиеватее сформулировать: Тип subClass наследует данные и функциональность существующего типа parentClass, в том числе и реализацию интерфейса iParentable. Вот только что от этого изменилось? По сравнению с тем, что написал я - ничего, лишь ненужного порожняка навалил. Если же сравнивать, что написал я, с тем, что написал ТС - "subClass реализует iParentable" - изменился смысл. Потому что subClass iParentable не реализует, его реализует parentClass, а subClass его наследует. Ладо, ладно, ты гений точных формулировок, только не волнуйся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 21:35 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Дмитрий МухAntonariyпропущено... По сравнению с тем, что написал я - ничего, лишь ненужного порожняка навалил. Если же сравнивать, что написал я, с тем, что написал ТС - "subClass реализует iParentable" - изменился смысл. Потому что subClass iParentable не реализует, его реализует parentClass, а subClass его наследует. Ладо, ладно, ты гений точных формулировок, только не волнуйся Я не волнуюсь, а объясняю очевидные вещи, как оказалось доступные пониманию не только лишь всех, что констатировать зело прискорбно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 21:43 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyДмитрий Мухпропущено... Ладо, ладно, ты гений точных формулировок, только не волнуйся Я не волнуюсь, а объясняю очевидные вещи, как оказалось доступные пониманию не только лишь всех, что констатировать зело прискорбно. Реализация - это что? Это конкретный функционал. Наследование - это что? Это когда один тип наследует данные и функционал другого. Таки чем тебя моя формулировка не устраивает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 21:48 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Дмитрий МухAntonariyпропущено... Я не волнуюсь, а объясняю очевидные вещи, как оказалось доступные пониманию не только лишь всех, что констатировать зело прискорбно. Реализация - это что? Это конкретный функционал. Наследование - это что? Это когда один тип наследует данные и функционал другого. Таки чем тебя моя формулировка не устраивает? Ооо, она прекрасна! Распечатай и повесь в рамочку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 21:52 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyДмитрий Мухпропущено... Реализация - это что? Это конкретный функционал. Наследование - это что? Это когда один тип наследует данные и функционал другого. Таки чем тебя моя формулировка не устраивает? Ооо, она прекрасна! Распечатай и повесь в рамочку. Она - это всего лишь стёб. Леса исчезнут, если каждый в рамочку вешать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 21:55 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyМожно наследовать незнамо что, наугад, закрыв глаза? Что за истерика? "Наугад, закрыв глаза.." AntonariyТы явно указываешь, что нужно вызвать метод интерфейса, этот метод реализован в базовом классе, он и вызывается. Я "явно указываю", что мне нужно вызвать метод класса, который "реализует", как тут утверждалось - интерфейс базового класса. Не надо выдумывать. AntonariyТак все-таки знаешь - переопределенный. Antonariyчто ты сам не знаешь, какой метод тебе нужен - базовый или переопределенный. Ты упоролся что-ли, что значит "всё-таки знаешь"?? Я экземпляр ЯВНО создаю. AntonariyА тебе нужно следующее: Это уже пятая прямая/косвенная портянка кода с virtual - то как решить проблему - было известно на момент создания темы. Нафига ты её запостил? AntonariyПри наличии new С2.Test независим от интерфейса, это такой же самостоятельный метод класса как Test2. Ты вопрос темы читал? Читал. Ты на него ответил? Ответил. К чему вся эта писанина? AntonariyПри наличии new С2.Test независим от интерфейса, Ты можешь почитать, что пишет студия при попытке переопределить метод без new. Если для того, чтобы понять это надо "лезть" в СIL-код, то это как раз таки хреново реализованная фича языка. Ибо компилятор это пропускает, когда как по факту, это не то что говнокод - это обфускация. AntonariyЭто чисто метод класса-наследника, он лишь название имеет такое же, как метод интерфейса. У интерфейса нет методов, запомни. Методы у классов, когда это усвоишь - тогда welcome и лекции. В общем - пережевал всё, что было на первой странице - ты слоупок? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 22:25 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Дмитрий Мух Таки чем тебя моя формулировка не устраивает? \ Да потому что она лажовая. "Потому что subClass iParentable не реализует, его реализует parentClass, а subClass его наследует." Скайана, большими буквамии - НЕ РЕАЛИЗУЕТ . Ты опять облажался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 22:27 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Повторение - мать учения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 22:31 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyА ты как думал? Можно наследовать незнамо что, наугад, закрыв глаза? Я расскажу - как я думал. "Незнамо что" - это мой класс. Я думал, что применив new - я скрою метод базового класса. Я думал, что создав объект наследника ВПРЯМУЮ и вызвав метод, который я переопределил - я вызову именно его. Если наследник НЕ реализует интерфейс, то почему компилятор позволяет привести наследника к типу интерфейса? Если он делает приведение через базовый класс, то почему это _никак_ не видно? Ни в отладчике, нигде вообще? В общем - выглядит, как баг. И ведет себя как баг. НЕ-ОЧЕ-ВИД-НО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 22:43 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123hVosttпропущено... Нет. Это тебе не нужно. )) тоже верно. У него чисто теоретический вопрос был. Почему? Наборот - чисто практический. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 22:44 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомТы можешь почитать, что пишет студия при попытке переопределить метод без new. Если для того, чтобы понять это надо "лезть" в СIL-код, то это как раз таки хреново реализованная фича языка.Я отродясь туда не лазил, мне достаточно браузер объектов посмотреть, чтобы понять, кто и как себя ведет. Агнец за бортомИбо компилятор это пропускает, когда как по факту, это не то что говнокод - это обфускация.То есть ты ниасилил наследование и shadowing настолько, что тебе нужно лезть в CIL, чтобы понять, как работает первое и второе, а виноват в этом язык? Оригинально. Вот тут табличка есть, авось осилишь: https://www.c-sharpcorner.com/UploadFile/ff2f08/overriding-vs-shadowing-in-C-Sharp/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 22:45 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyПереопределение методов поддерживает наследование. Перегрузка методов не поддерживает наследование. Я это не смог дешифровать. Что значит поддерживает? Где ты увидел перегрузку? Это ты с легкой руки new отнёс с перегрузке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 22:48 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомAntonariyА ты как думал? Можно наследовать незнамо что, наугад, закрыв глаза? Я расскажу - как я думал. "Незнамо что" - это мой класс. Я думал, что применив new - я скрою метод базового класса. Я думал, что создав объект наследника ВПРЯМУЮ и вызвав метод, который я переопределил - я вызову именно его. Если наследник НЕ реализует интерфейс, то почему компилятор позволяет привести наследника к типу интерфейса?Потому что он его наследует. Это его тип. Агнец за бортомЕсли он делает приведение через базовый класс, то почему это _никак_ не видно?Вообще-то это азы ООП. Отродясь так было, и даже смотреть там не на что. Агнец за бортомВ общем - выглядит, как баг. И ведет себя как баг. Как баг твоего образования. Агнец за бортомНЕ-ОЧЕ-ВИД-НО. Почему-то всем остальным это очевидно как дважды два. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 22:51 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyПочему-то всем остальным это очевидно как дважды два. Фигня. Ты единственный тут сказал, что наследник НЕ РЕАЛИЗУЕТ интерфейс. За это плюс конечно. До этого момента все, которым это было "очевидно как дважды два" топили за "какие еще тут могут быть мнения". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 22:56 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомДмитрий МухТаки чем тебя моя формулировка не устраивает? \ Да потому что она лажовая. "Потому что subClass iParentable не реализует, его реализует parentClass, а subClass его наследует." Скайана, большими буквамии - НЕ РЕАЛИЗУЕТ . Ты опять облажался. Ты бы читать сначала научился, прежде чем на лажу указывать. "Тип subClass наследует данные и функциональность существующего типа parentClass, в том числе и реализацию интерфейса iParentable". Реализует parentClass, subClass наследует... Всё как ты и хотел, **** ******. ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 23:01 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомAntonariyПереопределение методов поддерживает наследование. Перегрузка методов не поддерживает наследование. Я это не смог дешифровать. Что значит поддерживает? Где ты увидел перегрузку? Это ты с легкой руки new отнёс с перегрузке?Да, я с легкой руки перевел на русский терминологию VB, потому что она более адекватно описывает то, что символизирует: Код: 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. Благодаря терминологии VB, адекватно описывающей поведение объектов словами Implements, Inherits, Ovverridable, MustOverride, NotOverridable, Overloads, Shadows и т.д., мне более чем очевиден весь ООП дотнета. Не то что abstract, virtual и new - зная ООП и не зная C# хрен догадаешься, о чем это. Хоть override оставили, правда s потеряв. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 23:03 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Дмитрий МухТы бы читать сначала научился, Всё верно, вопрос прочитай в самом начале топика. Реализует или НЕ реализует. Какой же ты вывертливо-мерзотный... Лажаешь и юлишь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 23:04 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомДмитрий МухТы бы читать сначала научился, Всё верно, вопрос прочитай в самом начале топика. Реализует или НЕ реализует. Какой же ты вывертливо-мерзотный... Лажаешь и юлишь. Я не лажаю и не юлю. Я смеюсь над куском идиота ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 23:06 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом, кстати Timing-то покажи, **** ******. ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 23:09 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Дмитрий Мух, ПНХ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 23:12 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом, ХТ, **** ******. ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 23:23 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
OFF Агнец за бортомПочему? Наборот - чисто практический.ну это просто. Практический вопрос это на ранг выше. Т.е. Предметка с именами сущностей в предметной области. И зачем нужен класс поправленным интерфейсом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 23:25 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Antonariyзная ООП и не зная C# хрен догадаешься, о чем это.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 23:27 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Antonariy, Подытоживая: 1. Наследник всё же реализует интерфейс, который имплементирует его базовый класс. 2. Но - делает это через базовый класс. По поводу формулировок "реализует" - не знаю, как в управляемом коде получить доказательство обратного. Код: c# 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 23:30 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123OFF Агнец за бортомПочему? Наборот - чисто практический.ну это просто. Практический вопрос это на ранг выше. Т.е. Предметка с именами сущностей в предметной области. И зачем нужен класс поправленным интерфейсом. Ваще не понял. Что "просто"? Я ж написал - interface 15 методов. Основной класс / модифицированный в одном методе. Что тут обсуждать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 23:33 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом, SOLID — буква «L» в аббревиатуре означает Принцип подстановки Барбары Лисков (англ. Liskov Substitution Principle) советую почитать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 23:45 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Igor BarchenkoАгнец за бортом, SOLID — буква «L» в аббревиатуре означает Принцип подстановки Барбары Лисков (англ. Liskov Substitution Principle) советую почитать.вот вот.... +1. Предлагаю про Практику, а не абстрактный 1 из 15, обсудить завтра.. на работе) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 23:53 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Igor BarchenkoАгнец за бортом, SOLID — буква «L» в аббревиатуре означает Принцип подстановки Барбары Лисков (англ. Liskov Substitution Principle) советую почитать. Читать вообще полезно. При чем тут это? Petro123вот вот.... +1. Почитал? ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2018, 23:59 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом, при том что ты задачу применения DI решаешь полиморфизмом, что противоречит SOLID. Сделать можно, но потом искать эти костыли... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 00:02 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Надо тебе другое поведение - пиши новый класс, реализующий интерфейс. Пиши фабрику реализующую DI, а не лепи полиморфизм там где его не применять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 00:05 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомПочитал? )))ну ты упрямый). Я выше сказал предметку давай. И ссылку я прочитал. А ты только мячик кидаешь туда сюда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 00:23 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомПо поводу формулировокВсе формулировки, что я использовал, относятся ТОЛЬКО к исходникам. ООП - это же про исходники. Поэтому с точки зрения исходников Агнец за бортом1. Наследник всё же реализует интерфейсэто неверно. Где код реализации в наследнике? Нет его, он в родителе. Однако, тип наследника - составной. Он состоит из интерфейса, реализованного родителем, интерфейса самого родителя и собственного интерфейса. Не считая вездесущего object :). Поэтому объект финального типа можно привести к любому типу, из которых он состоит. К слову - набор собственных членов класса тоже называется интерфейсом (обобщающее название), и не нужно путать это название и интерфейс-элемент ООП и холиварить по этому поводу, мол у потомка нет реализованных интерфейсов. В TLB, например, собственный набор членов класса все равно описывается отдельным интерфейсом-элементом языка. Таким образом, "интерфейс класса" - это просто набор его публичных членов. Да и "приведение типов" - условность. Никакого действия под названием "приведение" над объектом не происходит, приведение типов не компилируется в какие-то инструкции (по крайней мере в VB6), происходит лишь указание компилятору, методы какого интерфейса нужно дергать. Поэтому с точки зрения компилятора "наследник реализует интерфейс" - правда. С его точки зрения даже иерархии никакой нет - просто плоская таблица методов, обращение к которым идет по адресам (вернее смещениям), которые вычисляются на этапе компиляции, исходя из порядка объявления интерфейсов и их членов (опять же потроха VB6 описываю, дотнетовские слабо представляю). И вот с этого момента начинаются срачи - реализует/не реализует. Граждане разработчики, а вы бинарники что ли пишете? Нет? Ну и не лезьте под руку компилятору, он в ООП разберется как сочтет нужным, а вы в лучше в исходниках не путайтесь и описывайте их на словах адекватно, чтобы слушатель не искал реализацию интерфейса в наследнике, которой там нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 00:37 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Igor BarchenkoАгнец за бортом, при том что ты задачу применения DI решаешь полиморфизмом, что противоречит SOLID. Сделать можно, но потом искать эти костыли... Не понимаю, ты не представляешь себе ситуации, где надо изменить _один_ метод у уже готовой реализации класса? Многое зависит от того, что считать "поведением" программы. Его ты не знаешь. Что обсуждать? А выражать можно что угодно, через что угодно - смотря по ситуации. Antonariyэто неверно. Где код реализации в наследнике? Нет его, он в родителе. Ок. AntonariyПоэтому с точки зрения компилятора "наследник реализует интерфейс" - правда. Ок. Вывод на самом деле "неожиданный". Фраза, которую я видел не то в приводимой выше ветке, не то где-то в нете - "если вы используете new - значит вы делаете что-то неправильно". Самый ценный вывод из этой ветки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 00:58 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyГраждане разработчики, а вы бинарники что ли пишете? Нет? Ну и не лезьте под руку компилятору,не согласен. Говорит же компилятор что у абстрактного метода нет реализации в потомках. Об этом и тема, моё имхо. Чтобы предупреждал). А вот верна ли постановка - мало информации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 01:13 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомНе понимаю, ты не представляешь себе ситуации, где надо изменить _один_ метод у уже готовой реализации класса? Ну вообще, это закладывается. И методы, которые могут быть изменены закрывают внутри реализации и делают их virtual protected . Заменить просто так работу какого-то метода... Ну это попахивает говнокодингом, при чём сильно. Но если отмахнуться, и сказать, да мне типа пофигу, надо и всё. Ну если надо, делай типа копипаст, а какая разница-то? Если говнокодить, до уже пофигу как. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 01:15 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ООП - говно :):):) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 02:37 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ViPRosООП - говно :):):) Жизнь полна разочарований особенно для некоторых ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 02:47 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttЗаменить просто так работу какого-то метода... Ога, прикинь? Или надо письмо разрабы писать, можно я унаследуюсь, мне там ерунда нужна. Или у тебя опять флудо-генератор включился? Что характерно, к концу ветки - риск выставить себя дебилом ниже обычного; но знаешь, хвост, он ещё есть.))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 07:50 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
С учетом вышеописанного, что сигнатуру базовых методов менять нельзя, но требуется использовать интерфейс IParantable - тогда я бы запулил шаблон Proxy . В 14 из 15 методах сделал бы вызов метода базового класса. В 15ом, требующем коррекции - запулил бы свою реализацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 08:01 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
PallarisВ 14 из 15 методах сделал бы вызов метода базового класса. Мне вот интересно - чего ради вся эта писанина? Работа ради работы? Из кейса ветки очевидных выхода два: 1. virtual/override (если есть доступ к базовому классу) 2. явное указание реализации интерфейса iParentable в классе-наследнике. Минимум кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 08:13 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyПоэтому с точки зрения исходников Агнец за бортом1. Наследник всё же реализует интерфейсэто неверно. Где код реализации в наследнике? Нет его, он в родителе. А что тогда по твоему в этом случае: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Наследник реализует, или не реализует, или частично реализует интерфейс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 08:15 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyГраждане разработчики, а вы бинарники что ли пишете? Нет? Ну и не лезьте под руку компилятору, он в ООП разберется как сочтет нужным, а вы в лучше в исходниках не путайтесь и описывайте их на словах адекватно, чтобы слушатель не искал реализацию интерфейса в наследнике, которой там нет. Ты столкнулся с наследниками, в которых нет кода что-ли? Адекватные граждане разработчики бастардов не клепают! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 08:19 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом, Второй метод не катит. Увы. авторОдни языки программирования (например, C++, C#) требуют явно указывать, что данный метод является виртуальным. В других языках (например, Java, Python) все методы являются виртуальными по умолчанию (но только те методы, для которых это возможно; например в Java методы с доступом private не могут быть переопределены в связи с правилами видимости). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 08:19 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123Второй метод не катит. Увы. Что значит "не катит"? Компилятор в попапе пишет "no katit"? авторВ других языках (например, Java, Python) все методы являются виртуальными по умолчанию И как живут - беспредел же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 08:21 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомИли надо письмо разрабы писать, можно я унаследуюсь, мне там ерунда нужна.дописать свой метод в наследнике... Будет прямо по барбаре лисковой))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 08:23 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом, Про компилятор я с тобой согласен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 08:24 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомИ как живут - беспредел же."ты на святое покушаешься")))). Вопрос, почему в шарпе как в дельфи у хуже чем в java надо было сразу в заголовке темы написать). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 08:27 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомPallarisВ 14 из 15 методах сделал бы вызов метода базового класса. Мне вот интересно - чего ради вся эта писанина? Работа ради работы? Как тебе такой интерфейс: IBucket Methods ? 222 метода против твоих 15. Задача: обернуть в Circuit Breaker . Чтобы если дёргаешь метод бакета, а в этот момент Couchbase отвалился, то срабатывал предохранитель и приложение спокойно работало себе дальше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 08:29 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомPallarisВ 14 из 15 методах сделал бы вызов метода базового класса. Мне вот интересно - чего ради вся эта писанина? Работа ради работы? Из кейса ветки очевидных выхода два: 1. virtual/override (если есть доступ к базовому классу) 2. явное указание реализации интерфейса iParentable в классе-наследнике. Минимум кода. Минимум-то минимум, но чревато. Нужно четко понимать, что делаешь, и как код будет использоваться Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 08:57 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#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 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Сон Веры ПавловныВ 90% случаев - да. Особенно если вся кодовая база - собственная. Можно пояснить? Поголовный DI? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 14:16 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttМожно пояснить? Поголовный DI? hVosttАгнец за бортомНе понимаю, ты не представляешь себе ситуации, где надо изменить _один_ метод у уже готовой реализации класса? Ну вообще, это закладывается. И методы, которые могут быть изменены закрывают внутри реализации и делают их virtual protected . Заменить просто так работу какого-то метода... Ну это попахивает говнокодингом, при чём сильно. hVosttНадо понимать, что если ты хочешь изменить ни с того ни с сего работу одного метода, когда это не было изначально заложено разработчиком класса -- ты определённо собираешься написать говнокод. Это матьево железобетонный факт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 14:54 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123AntonariyА тут фигакс - в библиотеке появился метод, имеющий такое же название, как у тебя в наследнике, но с другой сигнатурой, Подробнее про Фигас. Как это случилось что появился наследник без компиляции.А кто сказал, что он появился без компиляции? Возьмем твой, например, класс DBCommand, в нем нет метода OpenXmlReader. Ты унаследовал собственный класс MyCommand от DBCommand, сделал метод OpenXmlReader, скомпилировал собственную библиотеку доступа к данным и отдал разработчикам. Прошел год, разработчики наколбасили кода, использующего MyCommand.OpenXmlReader, и тут выходит обновление фреймворка, в котором у DBCommand появился метод OpenXmlReader. Что делает твой проект? Начинает предупреждать: "MyCommand.OpenXmlReader()" скрывает наследуемый член "DBCommand.OpenXmlReader()". Если скрытие было намеренным, используйте ключевое слово new. Я уже и забыл, что одноименные методы можно совершенно свободно использовать, и методы потомка перекрывают методы родителя. И как раз в этом случае компилятор предупреждает, чего ТСу от него так не хватало. И Сон Веры Павловны правильно сказал - new используется лишь для подавления этого предупреждения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 15:08 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
skyANAAntonariyпропущено... наследник наследует, дурня ты кусок. Что это значит, умника щепотка? Реализация метода B в наследнике полностью своя, метода A унаследованная. Как ты трактуешь такую ситуацию, когда половина реализации своя, а половина от базового класса?Так и трактую - половина унаследована, половина переопределена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 15:12 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Сон Веры ПавловныhVosttМожно пояснить? Поголовный DI? hVosttпропущено... Ну вообще, это закладывается. И методы, которые могут быть изменены закрывают внутри реализации и делают их virtual protected . Заменить просто так работу какого-то метода... Ну это попахивает говнокодингом, при чём сильно. hVosttНадо понимать, что если ты хочешь изменить ни с того ни с сего работу одного метода, когда это не было изначально заложено разработчиком класса -- ты определённо собираешься написать говнокод. Это матьево железобетонный факт. И при чём тут new? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 15:15 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Пля.... вы что про new для переопределения метода? ну ё-моё.... Нельзя чтоли было сказать перекрытие метода ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 15:16 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttИ при чём тут new? При том, что ТС всё вышеописанное (изменить ни с того ни с сего работу одного метода, когда это не было изначально заложено разработчиком класса) как раз с помощью new и сделал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 15:17 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttПля.... вы что про new для переопределения метода? ну ё-моё.... Да тут вся тема об этом.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 15:17 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Перекрытие метода это вообще баг языка. Добавили видимо для болванов, не осиливших ни ООП, ни архитектурных приёмов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 15:17 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttПля.... вы что про new для переопределения метода? ну ё-моё.... Ну не про вызов же конструктора. Выше употреблялся термин "перекрытие", но для краткости, и поскольку вся эта дискуссия про перекрытие, местами использовался new. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 15:19 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttПерекрытие метода это вообще баг языка. Что я слышу... o_O ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 15:21 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttПерекрытие метода это вообще баг языка. Добавили видимо для болванов, не осиливших ни ООП, ни архитектурных приёмов. Да, кстати, в той же яве такая штука невозможна. Если уж запечатали метод final'ом, то всё, приехали. А у нас и sealed-методы перекрывай, сколько влезет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 15:21 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомhVosttПерекрытие метода это вообще баг языка. Что я слышу... o_Oя тоже две страницы тупил что за new)))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 15:25 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyПрошел год, разработчики наколбасили кодаобычное дело. Перколбасят. DevExpress конвертеры выпускает. В java deprecated пометка будет 3 года висеть перед глазами. И т. д. Тут же сборки и версии сборок в шарпе для этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 15:29 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Сон Веры ПавловныhVosttПля.... вы что про new для переопределения метода? ну ё-моё.... Ну не про вызов же конструктора. Выше употреблялся термин "перекрытие", но для краткости, и поскольку вся эта дискуссия про перекрытие, местами использовался new. Ну... блин.. перекрытие вообще не надо обсуждать. За использование new для перекрытия надо бить. БОльно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 16:13 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
нормальные темы глохнут на 1 странице, а обсуждение какой то фигни уже идет 6 страниц подряд :) как так то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 16:21 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Roman Mejtesнормальные темы глохнут на 1 странице, а обсуждение какой то фигни уже идет 6 страниц подряд :) как так то? А у тебя мнение не поменялось? Реализует или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 16:25 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомRoman Mejtesнормальные темы глохнут на 1 странице, а обсуждение какой то фигни уже идет 6 страниц подряд :) как так то? А у тебя мнение не поменялось? Реализует или нет?провокатор)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 16:43 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Код: 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. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 17:24 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Фаулер "70 Паттернов ООП" - http://make-self.net/item/soedinenie-derevyannih-detaley.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 17:55 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ViPRosФаулер "70 Паттернов ООП" - http://make-self.net/item/soedinenie-derevyannih-detaley.html Воу воу, да ты еретик! ООП же #$)*$# ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 18:02 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVostt, Я думаю они кроме строительства ничего не читали, им надо бы начинать изучать архитектуру машин и механизмов, способы формообразования и трансформации, во блин появятся тыщи новых паттернов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 18:05 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ViPRoshVostt, Я думаю они кроме строительства ничего не читали, им надо бы начинать изучать архитектуру машин и механизмов, способы формообразования и трансформации, во блин появятся тыщи новых паттернов да не.. судя по твоему настрою, тру инженер на х вертел всякие методички по проектированию архитектуры машин, механизмов, и вот это вот всё. настоящий инженер -- художник, должен делать "как видит", а не как где-то там написано.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 18:08 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVostt, Конечно, а то будешь легостроителем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2018, 18:41 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом Если наследник НЕ реализует интерфейс, то почему компилятор позволяет привести наследника к типу интерфейса? Более того, код ниже прекрасно компилируется и выполняется! Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2018, 19:02 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВ, отэтот тож компилируется и выполняется Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2018, 19:56 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVostt, потому и говно еще можно так select ишак from petro123 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2018, 20:15 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВБолее того, код ниже прекрасно компилируется и выполняется! Но для умеющих читать выхлоп канпелятора будет намек: Код: plaintext Для счастливых обладателей решарпера будет еще один намек: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 06:08 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ViPRosговно ViPRosишак Тебя как пустили в приличное общество( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 07:04 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123ViPRosговно ViPRosишак Тебя как пустили в приличное общество( +1 Тутошнее общество не без душка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 08:10 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомPetro123пропущено... пропущено... Тебя как пустили в приличное общество( +1 Тутошнее общество не без душка. А кто образец вежливости и конструктива? Сон Веры Павловны? Всем равняться на него? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 09:58 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Попытался осилить тему. Не смог. Поясните, уважаемые. 1. Вопрос в том, что разработчики .net не правы введя слово new? Оно мешает? Его наличие вводит в заблуждение? 2. Почему нельзя сделать явную реализацию интерфейса в наследнике? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 12:31 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Addx, 1. Оно избыточно. 2. Зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 12:34 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123Addx, 1. Оно избыточно. Ну, так это давно известно любому разработчику. Как и аргументы за него, и против него. Лично я бы предпочел, чтобы оно было обязательным. Но мне непонятно, как это связано с темой. Petro123Зачем? В языке есть неявное соглашение, что в определенных ситуациях достаточно указать имя метода соответсвующее по названию имеющемуся в интерфейсе, и при этом он будет считаться реализацией этого интерфейса. Если непонятно, какой метод привязывается, можно указать явно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 13:01 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AddxЛично я бы предпочел, чтобы оно было обязательным.оригинально)). Избыточно, это значит мы можем достигать цели и без данного оператора. Обязательным для ненужного? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 13:08 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Addx, Сравни введение await и new для метода. Что Значимее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 13:10 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123AddxЛично я бы предпочел, чтобы оно было обязательным.оригинально)). Избыточно, это значит мы можем достигать цели и без данного оператора. Обязательным для ненужного? Не вижу смысла сейчас развивать тему, не хочу спорить. Я не считаю его ненужным. Просто пытаюсь уловить суть спора. Petro123Addx, Сравни введение await и new для метода. Что Значимее? Не понимаю, как можно сравнивать теплое с мягким. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 13:19 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Addx, Студия перед тобой? Скажи внятно зачем тебе new метода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 13:28 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AddxНе понимаю, как можно сравнивать теплое с мягким.вот это мягкое нам не нужно)))). Открой студию, увидешь там лампочку желтую и другие плюшки. Жизнь и так прекрасна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 13:32 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AddxПросто пытаюсь уловить суть спора. Ответь на вопрос в самом первом сообщении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 14:26 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомОтветь на вопрос в самом первом сообщении. Да. И в чем предмет спора? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 14:32 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомОтветь на вопрос в самом первом сообщении.о нет, еще десяток страниц! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 14:32 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AddxДа. И в чем предмет спора?В том, что ТС не согласен с ответом "да" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 14:33 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Shocker.ProAddxИ в чем предмет спора?В том, что ТС не согласен с ответом "да" )))) Вообще-то, не только я. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 14:33 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом)))) Вообще-то, не только я.Ох уж эти остроконечники и тупоконечники ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 14:36 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AddxАгнец за бортомОтветь на вопрос в самом первом сообщении. Да. И в чем предмет спора?он многоплановый. Можно не участовать. Тебя вычеркиваем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 14:37 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомShocker.Proпропущено... В том, что ТС не согласен с ответом "да" )))) Вообще-то, не только я.да Трое с половиной и 10 оздержалось. Большинство. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 14:39 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Shocker.ProВ том, что ТС не согласен с ответом "да" Ну, бывает, а 7 страниц-то спора о чем? Кто-то еще согласен с этой позицией? Или что-то еще обсуждается? Насчет слова "new" я понял, весь спор только о его полезности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 14:39 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомShocker.Proпропущено... В том, что ТС не согласен с ответом "да" )))) Вообще-то, не только я. А кто еще? Лучше ссылки, но найду сообщения и по нику, если лень искать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 14:44 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123Addx, 1. Оно избыточно. Это не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 14:45 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Addx, hVostt Мне его мнения достаточно. У него нюх))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 14:46 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВPetro123Addx, 1. Оно избыточно. Это не так.к барьеру! Верее к студии!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 14:47 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123Addx, hVostt Мне его мнения достаточно. У него нюх))) Пролистал, не нашел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 14:53 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AddxПролистал, не нашел.ни одного поста? Я должен искать прогульщик занятий? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 15:03 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123ЕвгенийВпропущено... Это не так.к барьеру! Верее к студии!!! Студия - это просто графическая оболочка над компилятором. Можно взять другую. ) Необязательность не показатель ненужности. Например private в полях классов необязателен. Но вовсю применяется Microsoft'ом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 15:09 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123AddxПролистал, не нашел.ни одного поста? Я должен искать прогульщик занятий? Ни одного поста, непосредственно связанного с ответом на изначальный вопрос. Я об этом, разумеется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 15:12 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AddxСтудия - это просто графическая оболочка над компилятором. Можно взять другую. )может тебе погулять? Тут у всех выше были хоть аргументы. У тебя hVostt тут ничего не говорил. К студии не пойду т.к. типа отшельник на макинтоше пишешь. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 15:25 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AddxАгнец за бортомОтветь на вопрос в самом первом сообщении. Да.раз да, покажи код реализации в наследнике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 15:26 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVostt, приди и скажи ему правду про оператор new. Он уже заждался). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 15:27 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyAddxпропущено... Да.раз да, покажи код реализации в наследнике. Покажи наследника в котором ничего не изменили по сравнению с базовым классом. Объясни - зачем нужен такой наследник. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 15:29 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
skyANAAntonariyпропущено... раз да, покажи код реализации в наследнике. Покажи наследника в котором ничего не изменили по сравнению с базовым классом. Объясни - зачем нужен такой наследник.твое требование совершенно левое по отношению к стартовому вопросу, и оно идет хорошо тебе известным эротическим маршрутом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 15:30 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyskyANAпропущено... Покажи наследника в котором ничего не изменили по сравнению с базовым классом. Объясни - зачем нужен такой наследник.твое требование совершенно левое по отношению к стартовому вопросу, и оно идет хорошо тебе известным эротическим маршрутом. А, то есть в стартовом вопросе речь о бесполезных наследниках. С такими смело сам иди известным эротическим маршрутом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 15:33 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyAddxпропущено... Да.раз да, покажи код реализации в наследнике. Реализации чего? Какая стоит задача? Чтобы при преобразовании к интерфейсу мы вызывали переопределенный метод? Или что-то еще? Мне непонятно, с чего бы вдруг реализация интерфейса перепревязалась в наследнике к постороннему методу. В .net простой и очевидный механизм. ИМХО, разумеется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 15:37 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
skyANAAntonariyпропущено... твое требование совершенно левое по отношению к стартовому вопросу, и оно идет хорошо тебе известным эротическим маршрутом. А, то есть в стартовом вопросе речь о бесполезных наследниках. С такими смело сам иди известным эротическим маршрутом.Я вижу, что ты тупой, что ты замещаешь дурацкими фантазиями то, что понять не в состоянии, поэтому повторю: В стартовом посте речь идет о 1) интерфейсе iParentable 2) базовом классе, parentClass реализующем инетерфейс iParentable 3) наследнике subClass базового класса parentClass Содержимое всех этих сущностей произвольное. И так же задан вопрос: реализует ли класс subClass интерфейс iParentable . Если ответ "да", то задача состоит в следующем: показать c#-код реализации интерфейса iParentable в классе subClass с целью подтвердить этот ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 15:46 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Antonariy, )) +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 15:48 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123hVostt, приди и скажи ему правду про оператор new. Он уже заждался). Причем тут ключевое слово new? Ответ может быть только да/нет. Наследник не может "прекратить реализовывать интерфейс". Соображение "он реализует его не так, как я считаю правильным, поэтому он его не реализует" звучит как минимум странно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 15:48 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Addx, Ту смешиваешь аж 3 вопроса: Оператор new, интерфейсы и наследование. Да еще без кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 15:51 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Antonariy ... Если ответ "да", то задача состоит в следующем: показать c#-код реализации интерфейса iParentable в классе subClass с целью подтвердить этот ответ. Я вижу непонимание работы .net как такового. Да и ООП в целом. В наследнике НЕ НУЖНО реализовывать методы, которые УЖЕ были реализованы в предке. Это основы. 2+2=4. Интерфейсы привязываются к методам в данном конкретном классе, после этого они НИКОГДА не перепривязываются. Виртуальные методы - отдельная тема, там другой механизм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 15:56 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123Addx, Ту смешиваешь аж 3 вопроса: Оператор new, интерфейсы и наследование. Да еще без кода. Я смешиваю?! Я наоборот, хотел все вопросы по отдельности рассматривать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 15:58 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AddxВ наследнике НЕ НУЖНО реализовывать методы, которые УЖЕ были реализованы в предкеда И остальное тоже верно. Че тогда спорил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 15:58 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Addxпо отдельности рассматривать.ну дак на операторе застряли. Он избыточен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 15:59 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123Addxпо отдельности рассматривать.ну дак на операторе застряли. Он избыточен? Нет, не избыточен. Выше была ссылка на обсуждение посвященное только ему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 16:05 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AddxAntonariy... Если ответ "да", то задача состоит в следующем: показать c#-код реализации интерфейса iParentable в классе subClass с целью подтвердить этот ответ. Я вижу непонимание работы .net как такового. Да и ООП в целом. В наследнике НЕ НУЖНО реализовывать методы, которые УЖЕ были реализованы в предке. Это основы. 2+2=4. Интерфейсы привязываются к методам в данном конкретном классе, после этого они НИКОГДА не перепривязываются.Переводя этот поток сознания на чоткий базар ООП-понятий: subClass не реализует iParentable, он наследует реализацию . То есть правильный ответ - НЕТ. Я вижу непонимание смысла терминов ООП. Хер от пальца отличаем, а их названия - путаем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 16:08 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВ, Студию открой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 16:09 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123hVostt, приди и скажи ему правду про оператор new. Он уже заждался). да чё тут говорить, вообще обсуждение использования перекрытия методов с помощью new является пустой тратой времени, так как это должно быть вне закона :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 16:25 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyskyANAпропущено... А, то есть в стартовом вопросе речь о бесполезных наследниках. С такими смело сам иди известным эротическим маршрутом.Я вижу, что ты тупой, что ты замещаешь дурацкими фантазиями то, что понять не в состоянии, поэтому повторю: В стартовом посте речь идет о 1) интерфейсе iParentable 2) базовом классе, parentClass реализующем инетерфейс iParentable 3) наследнике subClass базового класса parentClass Содержимое всех этих сущностей произвольное. И так же задан вопрос: реализует ли класс subClass интерфейс iParentable . Если ответ "да", то задача состоит в следующем: показать c#-код реализации интерфейса iParentable в классе subClass с целью подтвердить этот ответ. Да нет, тупой ты. Наследника создают, чтобы изменить или расширить поведение базового класса. Либо создать конкретную реализацию, когда базовый класс абстрактный. В любом случае в наследнике будет некая конкретная логика, относящаяся к контракту, определённому интерфейсом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 16:31 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttPetro123hVostt, приди и скажи ему правду про оператор new. Он уже заждался). да чё тут говорить, вообще обсуждение использования перекрытия методов с помощью new является пустой тратой времени, так как это должно быть вне закона :)Если весь код твой, то да. А если ты унаследовался от чужого бинарника, в котором после обновления его версии появился одноименный метод, который уже существует в твоем наследнике, то либо терпеть предупреждения компилятора о перекрытии, либо подавить их через new. Либо отрефакторить код, изменив название своего метода, вызывая приступы анальных болей у тех, кто юзает в виде бинарника твой код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 16:31 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
skyANAAntonariyпропущено... Я вижу, что ты тупой, что ты замещаешь дурацкими фантазиями то, что понять не в состоянии, поэтому повторю: В стартовом посте речь идет о 1) интерфейсе iParentable 2) базовом классе, parentClass реализующем инетерфейс iParentable 3) наследнике subClass базового класса parentClass Содержимое всех этих сущностей произвольное. И так же задан вопрос: реализует ли класс subClass интерфейс iParentable . Если ответ "да", то задача состоит в следующем: показать c#-код реализации интерфейса iParentable в классе subClass с целью подтвердить этот ответ. Да нет, тупой ты. Наследника создают, чтобы изменить или расширить поведение базового класса. Либо создать конкретную реализацию, когда базовый класс абстрактный. В любом случае в наследнике будет некая конкретная логика, относящаяся к контракту, определённому интерфейсом.А я что, отказываю наследнику в этом? Ты не просто тупой, ты тупой клоун. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 16:37 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyskyANAпропущено... Да нет, тупой ты. Наследника создают, чтобы изменить или расширить поведение базового класса. Либо создать конкретную реализацию, когда базовый класс абстрактный. В любом случае в наследнике будет некая конкретная логика, относящаяся к контракту, определённому интерфейсом.А я что, отказываю наследнику в этом? Не отказываешь, но почему-то не считаешь это реализацией. А если считаешь, то тогда задаёшь тупые вопросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 16:40 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123AddxВ наследнике НЕ НУЖНО реализовывать методы, которые УЖЕ были реализованы в предкеда И остальное тоже верно. Че тогда спорил? авторЕсли ответ "да", то задача состоит в следующем: показать c#-код реализации интерфейса iParentable в классе subClass с целью подтвердить этот ответ. авторAntonariy, )) +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 16:46 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
skyANAAntonariyпропущено... А я что, отказываю наследнику в этом? Не отказываешь, но почему-то не считаешь это реализацией. А если считаешь, то тогда задаёшь тупые вопросы.Вот тебе умный вопрос: до каких пор ты будешь свои сопли по клавиатуре размазывать? Изначально шла речь о реализации конкретного интерфейса в конкретном классе, имеющего конкретного наследника. И пусть этот наследник хоть 100500 собственных методов имеет - тот конкретный интерфейс в нем не реализован, хоть ты захлебнись своими соплями, он реализован в базовом классе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 16:47 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Модератор: skyANA, Antonariy - МСУ мы вроде сегодня не приглашали, поэтому не надо готовиться к его визиту... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 16:52 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyИзначально шла речь о реализации конкретного интерфейса в конкретном классе, имеющего конкретного наследника. И пусть этот наследник хоть 100500 собственных методов имеет - тот конкретный интерфейс в нем не реализован, хоть ты захлебнись своими соплями, он реализован в базовом классе. А покажи реального такого наследника, что используется на практике, а не сферического со 100500 методами, что никак не влияют на реализацию контракта интерфейса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 16:56 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyПереводя этот поток сознания на чоткий базар ООП-понятий: subClass не реализует iParentable, он наследует реализацию . То есть правильный ответ - НЕТ. Я вижу непонимание смысла терминов ООП. Хер от пальца отличаем, а их названия - путаем. В ООП нет базаров. "Реализует" и "я написал" ничего общего между собой не имеют. subClass реализует интерфейс. Точка. Мне, как пользователю класса, все равно, где и кто там написал код. Меня вообще не интересует иерархия наследования. Меня интересует, реализует ли конкретный класс (subClass) интерфейс или нет. В этом смысл ООП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 16:59 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Addx, Там в вопросе намешано куча всего. Когда по коду, то все просто: 1. New лишний. Вместо него надо все методы виртуальными как в жабе 2. Интерфейс сбоку стоит в иерархии и реализуется только там где прописан. Приведение автоматом. 3. При совпадании метода студия предупредит что перекрываем. Что еще надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 17:00 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AddxМеня вообще не интересует иерархия наследования. Меня интересует, реализует ли конкретный класс (subClass) интерфейс или нет. В этом смысл ООП. Хорошо сказал! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 17:01 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Antonariyон реализован в базовом классе.+1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 17:07 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123Addx, Там в вопросе намешано куча всего. Когда по коду, то все просто: 1. New лишний. Вместо него надо все методы виртуальными как в жабе 2. Интерфейс сбоку стоит в иерархии и реализуется только там где прописан. Приведение автоматом. 3. При совпадании метода студия предупредит что перекрываем. Что еще надо? 1. Есть virtual и override. Ничего общего с new они не имеют. Абсолютно. В C# есть виртуальные методы и есть невиртуальные. Невиртуальный метод сделать в наследнике виртуальным нельзя. Так работает .net. Это базовые принципы. Возможно, это может не понравиться, но тут либо смириться, либо не писать на C#. 2. Да. Не всегда. 3. Да. Я вижу, что Вам не нравится new, но спорить не буду. Лишь поясню свое мнение. Для меня предупреждения студии вообще не аргумент. Если программист Петя проигнорировал предупреждение, то при сборке проекта я ничего не пойму. И на ревью я буду заморачиваться - так надо было, или он затупил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 17:22 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AddxЯ вижу, что Вам не нравится new, но спорить не буду. Лишь поясню свое мнение. Для меня предупреждения студии вообще не аргумент. Если программист Петя проигнорировал предупреждение, то при сборке проекта я ничего не пойму. И на ревью я буду заморачиваться - так надо было, или он затупил?Поэтому должна быть ошибка, а не предупреждение - тут я с Хвостом согласен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 17:24 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Вроде это можно даже прагмой настроить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 17:25 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомAddxМеня вообще не интересует иерархия наследования. Меня интересует, реализует ли конкретный класс (subClass) интерфейс или нет. В этом смысл ООП. Хорошо сказал! И да, реализует. Поскольку внутренняя кухня от меня скрыта, я спокойно им (интерфейсом) пользуюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 17:25 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Addx, Дык я мирюсь и пишу). Вернее я Не пишу new. Это разрешено? А ты сам то пишешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 17:27 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Shocker.ProВроде это можно даже прагмой настроитьименно. И даже лампочкой волшебной ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 17:27 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AddxАгнец за бортомпропущено... Хорошо сказал! И да, реализует. Поскольку внутренняя кухня от меня скрыта, я спокойно им (интерфейсом) пользуюсь. Тогда почему код на скриншоте ведёт себя так, как ведёт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 17:28 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомТогда почему код на скриншоте ведёт себя так, как ведёт?ты все время пытаешься одновременно выставлять себя и изготовителем этого класса и его потребителем. Но за функционал класса отвечает изготовитель. Поэтому изготовитель решает - перекрыть метод и явно реализовать интерфейс или перекрыть метод, но дать возможность пользователям интерфейса вызывать базовую релизацию. То есть именно класс отвечает за свой функционал, а никак не потребитель. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 17:32 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, Я думаю ему давно все понятно. У него с новеньким терки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 17:38 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AddxМеня интересует, реализует ли конкретный класс (subClass) интерфейс или нет. В этом смысл ООП. Конкретная реализация наследования в определенном языке программирования, ещё не есть весь смысл ООП ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 17:39 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомAddxпропущено... И да, реализует. Поскольку внутренняя кухня от меня скрыта, я спокойно им (интерфейсом) пользуюсь. Тогда почему код на скриншоте ведёт себя так, как ведёт? Потому что он так и должен себя вести! Я пишу точные формулировки, а в ответ получаю демагогию. Ладно. MSDNIf the interface is inherited because you inherited a base class that implements the interface, the base class provides the implementation of the members of the interface. Выделил ключевые моменты. Могу перевести или дополнить, если что-то непонятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 17:40 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Shocker.Proты все время пытаешься Бррр... Уважаемый Addx занял недвусмысленную позицию. Причём тут изготовители? Есть класс, есть интерфейс, есть код с поведением. Я солидарен с Antoniary. Не реализует. Четкий ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 17:40 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AddxАгнец за бортомпропущено... Тогда почему код на скриншоте ведёт себя так, как ведёт? Потому что он так и должен себя вести! Я пишу точные формулировки, а в ответ получаю демагогию. Ладно. MSDNIf the interface is inherited because you inherited a base class that implements the interface, the base class provides the implementation of the members of the interface. Выделил ключевые моменты. Могу перевести или дополнить, если что-то непонятно. Наследует реализацию и реализует - одно и тоже? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 17:43 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВAddxМеня интересует, реализует ли конкретный класс (subClass) интерфейс или нет. В этом смысл ООП. Конкретная реализация наследования в определенном языке программирования, ещё не есть весь смысл ООП Сокрытие реализации - базовый принцип. Как именно реализовано - зависит от языка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 17:43 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомТогда почему код на скриншоте ведёт себя так, как ведёт? Мда.. IL показывали, метаданные методов показывали - не в коня корм. Ну ладно, вот дампы MethodsTable (vtable, по сути). Получены с помощью windbg+sos. а) в случае, когда метод только унаследован (определен только в Bar): Код: 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. б) определен в Bar как виртуальный, и переопределен (override) в Foo: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. в) перекрыт (new) в Foo: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 17:50 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом Код: plaintext Потому что он так и должен себя вести! Я пишу точные формулировки, а в ответ получаю демагогию. Ладно. пропущено... Выделил ключевые моменты. Могу перевести или дополнить, если что-то непонятно. Наследует реализацию и реализует - одно и тоже? interface is inherited - наследует интерфейс. Никакого "наследования реализации". Но, разумеется, для реализации интерфейса в наследнике нужно унаследовать реализацию из базового класса. Взять ее просто больше неоткуда. Это прямо сказано в документации, и код ведет себя именно так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 17:52 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Сон Веры Павловны, Слушай, да мне пофиг на il/метаданные, что ты мне их суешь? Ты вопроса не понимаешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 17:53 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Addx Сокрытие реализации - базовый принцип. Сокрытие реализации было еще в Turbo Pascal 4.0, в 1987 году. А никакого ООП там не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 17:54 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомСон Веры Павловны, Слушай, да мне пофиг на il/метаданные, что ты мне их суешь? Ты вопроса не понимаешь? Я прекрасно понимаю, что кое-кто заблудился в трех соснах (вместо того, чтобы заниматься делом). На все заданные вопросы ответы уже были даны, всё остальное - либо троллинг, либо схоластика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 17:55 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Сон Веры Павловны... Мда.. IL показывали, метаданные методов показывали - не в коня корм. ... Ты тут не умничай, ты пальцем покажи. (с) ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 17:56 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВAddxСокрытие реализации - базовый принцип. Сокрытие реализации было еще в Turbo Pascal 4.0, в 1987 году. А никакого ООП там не было. ООП подразумевает сокрытие реализации. Наоборот - не всегда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 17:57 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AddxТы тут не умничай, ты пальцем покажи. (с) ))) Так показано ведь - выделено красным в последнем блоке. При перекрытии метода базового у типа в vtable фактически образуется 2 метода с одинаковой сигнатурой, и для того, чтобы разрулить, какой из них вызывать, используется объявленный тип экземпляра объекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 17:58 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Сон Веры Павловны, это понятно и без IL и vtable. Эти моменты прямо указаны в документации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 18:05 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AddxСон Веры Павловны, это понятно и без IL и vtable. Эти моменты прямо указаны в документации. Ну да. Однако некоторые до сих пор этого не могут понять - вот и приходится идти на крайние меры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 18:11 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Сон Веры ПавловныОднако некоторые до сих пор этого не могут понять - вот и приходится идти на крайние меры. Зачем? Тебя настолько где-то там унижают, что приходится тащить всё сюда? Почему тебе "приходится"? Я к стенке тебя не припираю. Не нравится - иди мимо. По IL-коду - почему ветер дует? Потому что деревья гнутся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 18:22 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Addx, Тогда скажи вот что. Если class subclass : baseClass - релизует интерфейс iParentable - и это однозначно, то как трактовать такую запись: class subclass : baseClass, iParentable - в твоих же терминах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 18:24 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомЗачем? Тебя настолько где-то там унижают, что приходится тащить всё сюда? Почему тебе "приходится"? Я к стенке тебя не припираю. Не нравится - иди мимо. О. В ход пошла тяжелая артиллерия - переход на личности. Нас ждет море конструктива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 18:29 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Сон Веры Павловныпереход на личности. Да больно надо. Просто неловко видеть всю твою боль и завуалированные подъёбочки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 18:32 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомAddx, Тогда скажи вот что. Если class subclass : baseClass - релизует интерфейс iParentable - и это однозначно, то как трактовать такую запись: class subclass : baseClass, iParentable - в твоих же терминах. subclass реализует интерфейс iParentable , как же еще. Хоть в каждом промежуточном классе объяви, ничего не поменяется. Если Вас интересуют детали реализации, то: MSDNclass can provide an implementation of an interface only one time and only if the class declares the interface as part of the definition of the class (class ClassName : InterfaceName). If the interface is inherited because you inherited a base class that implements the interface, the base class provides the implementation of the members of the interface. никаких разночтений тут быть не может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 18:36 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомДа больно надо. Просто неловко видеть всю твою боль и завуалированные подъёбочки. Так Вы про это хотите поговорить? Или про интерфейсы и оператор new? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 18:36 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомclass subclass : baseClass, iParentable - в твоих же терминах.интерфейс дважды? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 18:38 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом, Не ругайтесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 18:39 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AddxХоть в каждом промежуточном классе объяви,не люблю бардак ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 18:42 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123AddxХоть в каждом промежуточном классе объяви,не люблю бардак В сложных случаях я предпочитаю явную реализацию. Не будет вопросов почему оно именно так работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 18:47 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Addxsubclass реализует интерфейс iParentable , как же еще. Окей. Так вот - лично мне не нравится эта неоднозначность. С точки зрения ООП и языка. Код, что я привёл на скрине. С использованием new - я получаю не желаемое поведение. (subclass реализует интерфейс iParentable , как же еще) С использованием virtual/override - желаемое. (subclass реализует интерфейс iParentable , как же еще) С использованием subclass : baseClass , iParentable - желаемое . (subclass реализует интерфейс iParentable , как же еще) Тогда как называется это всё время одинаково , и смысл кода - НЕ меняется (с моей точки зрения), а поведение - разное. Как в анекдоте - "понять это невозможно, это надо запомнить". С точки зрения ООП (не IL-кода или еще каких кишок) мне лично кажется непонятным: Почему в JAVA я могу, при использовании DI: 1. Унаследоваться от класса. 2. Переопределить интересующий меня метод. 3. Воткнуть его в конфигурацию DI-контейнера. И всё будет ок, а если разраб ПРЯМО ПРОТИВ изменения своего бриллиантового класса, то я получу ошибку компиляции . А в шарпе я сделаю РОВНО тоже самое, мне компилятор скажет про new keyword, всё скомпилится - но в рантайме - всё пойдёт по звезде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 19:01 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123Агнец за бортомclass subclass : baseClass, iParentable - в твоих же терминах.интерфейс дважды? Да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 19:01 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомPetro123пропущено... интерфейс дважды? Да.в коде пробовал? 1. Я смысла не вижу. 2. Интерфейс становится не публичным. Нет под рукой студии. Завтра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 19:05 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123в коде пробовал? Пробовал. Petro1231. Я смысла не вижу. Просто эксперимент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 19:06 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AddxВ сложных случаяхОК. В сложных я срываю стоп кран и еду на ободах до шиномонтажа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 19:07 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомПросто эксперимент.))) молодца)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 19:07 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом, Только про DI не надо. Издеваешься? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 19:12 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123Агнец за бортом, Только про DI не надо. Издеваешься? А в чём проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 19:13 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123ОК. В сложных я срываю стоп кран и еду на ободах до шиномонтажа. Тяжелая у Вас работа. У нас разработчикам такого делать не приходится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 19:16 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом, Инжекцию мы не обсуждали. И дело не в ней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 19:16 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AddxPetro123ОК. В сложных я срываю стоп кран и еду на ободах до шиномонтажа. Тяжелая у Вас работа. У нас разработчикам такого делать не приходится.new тоже самое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 19:17 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123Агнец за бортом, Инжекцию мы не обсуждали. И дело не в ней. Какая разница? Этот паттерн ближе всего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 19:17 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомPetro123Агнец за бортом, Инжекцию мы не обсуждали. И дело не в ней. Какая разница? Этот паттерн ближе всего.ближе всего у меня топор. Но я тяну руку дальше к миске для кошки чтобы ее покормить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 19:20 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом... Окей. Так вот - лично мне не нравится ... . Вот с этого и нужно было начинать. А не с безосновательных утверждений. Тогда бы спокойно обсудили, что и почему Вам не нравится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 19:20 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AddxВот с этого и нужно было начинать. Так как бы об этом всю ветку и речь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 19:21 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
А тот момент, что любое обсуждение уходит в срач в полемическом задоре - сами видите, публика-с... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 19:24 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом, Весь вопрос ветки в том что нужны default virtual методы. Остальное от java не отличается. Я бы не против..... и обсуждать тут больше нечего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 19:44 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AddxМеня интересует, реализует ли конкретный класс (subClass) интерфейс или нет. В этом смысл ООП.То есть понимать разницу между "реализует" и "наследует реализацию" ты отказываешься. AddxМне, как пользователю классаВерно, ты не программист, ты пользователь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 22:12 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
skyANAAntonariyИзначально шла речь о реализации конкретного интерфейса в конкретном классе, имеющего конкретного наследника. И пусть этот наследник хоть 100500 собственных методов имеет - тот конкретный интерфейс в нем не реализован, хоть ты захлебнись своими соплями, он реализован в базовом классе. А покажи реального такого наследника, что используется на практике, а не сферического со 100500 методами, что никак не влияют на реализацию контракта интерфейса.покажи хотя бы пару слов, объединенным общим смыслом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2018, 22:42 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyЕсли весь код твой, то да. А если ты унаследовался от чужого бинарника, в котором после обновления его версии появился одноименный метод, который уже существует в твоем наследнике, то либо терпеть предупреждения компилятора о перекрытии, либо подавить их через new. Либо отрефакторить код, изменив название своего метода, вызывая приступы анальных болей у тех, кто юзает в виде бинарника твой код. Вот тут я не понимаю. Переопределение virtual метода имеет смысл, так как ты можешь передать известный тип в чужой бинарник со своей реализацией. А перекрытие метода через new никуда передать нельзя, чужому бинарнику какбы нас...ть на твоё перекрытие. Соответственно, ты можешь выбрать любое другое имя для нового метода, чё ты прицепился к переопределению? На кой хрен? Что тебе это даст? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 01:29 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttСоответственно, ты можешь выбрать любое другое имя для нового метода, чё ты прицепился к переопределению? *к перекрытию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 01:31 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Antonariy, Вот давай посмотрим, есть такой класс Stream , он используется внутри фреймворка и во многих библиотеках. И вот, тебе захотелось переопределить метод CopyTo , который ни разу не виртуальный. Ты такой делаешь свою реализацию new CopyTo(...), и что получаешь? Ничего. Передашь инстанс своего класса-наследника с перекрытием, и никто не вызовет твой метод. Так почему бы не добавить свой метод MySuperCopyTo и не ипать никому мозг? Просто не понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 01:39 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123в коде пробовал? 1. Я смысла не вижу. 2. Интерфейс становится не публичным. Нет под рукой студии. Завтра. Выше уже говорилось, что применение EIMI требует отдельных обоснований. Поскольку у него куча своих нюансов. Допустим, нужно протянуть цепочку наследования EIMI-метода в унаследованный класс: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. - не выйдет (как и public virtual ISpeak...). Ок, в наследнике тоже сделаем EIMI, но с одной оговоркой - в нем надо сначала вызвать EIMI-метод базового класса (стандартная, в общем, штука при реализации переопределенных virtual-методов). Обычный вызов base.SayWord вызовет реализацию SayWord в Bar, а вот такое Код: c# 1. 2. 3. 4. 5. 6. 7. 8. тоже не прокатит. Наконец, при необходимости обратиться к EIMI-методу внутри класса, в котором он объявлен, придется постоянно кастовать this к соотв. интерфейсу. А если имеет место быть одновременное наследование интерфейса, и EIMI методов того же интерфейса, то стоит один раз забыть привести тип this - и долгое вылавливание багов и неочевидного поведения гарантировано. Это не говоря о том, что, как и в случае с перекрытием метода, результат вызова метода, одноименного с EIMI, будет зависить от объявленного типа экземпляра, на котором делается вызов. Агнец за бортомКак в анекдоте - "понять это невозможно, это надо запомнить". Некоторым людям, имеющим желание разобраться в вопросе, помогает чтение документации. Агнец за бортомПочему в JAVA я могу Потому что ява - другой язык. Ваш К.О. Если интересует, почему разработчики C# решили сделать иначе - пишите в Редмонд. Агнец за бортомА в шарпе я сделаю РОВНО тоже самое, мне компилятор скажет про new keyword, всё скомпилится - но в рантайме - всё пойдёт по звезде. Потому что перекрытие не равно переопределению. Потому что если делается перекрытие, нужно представлять себе, чем это чревато. Потому что если делаешь что-то, и не понимаешь, что делаешь, то ССЗБ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 07:16 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Сон Веры Павловны, Насколько вас понял, а вы все таки профи, в данном топике не следует уповать на: "в каждом наследнике продублирую интерфейс". ТС сказал что это у него эксперимент)). Ну и пусть забавляется. Я так не делаю и не пишу. В дельфях насколько знаю, нет такого. Имхо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 07:39 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортоммне компилятор скажет про new keyword, всё скомпилится - но в рантайме - всё пойдёт по звезде.ну дак ты среагировал по другому. У меня сразу появились претензии к оператору , а у тебя почему то глобальные претензии на 11 страниц. Не трать энергию понапрасну) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 07:44 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом, Ты кстати хотел хакнуть класс без виртуального метода. В курсе почему намедни ракета упала? При сборке боковая ступень не входила в замок-шип. И тогда сборщик загнал её силой. Молотком или чем ещё)). Дак вот когда ты в наследнике написал метод и имя совпало, студия тебя предупредила про конфликт. Но ты взял кувалду new и вогнал таки метод на место)). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 07:51 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyskyANAпропущено... А покажи реального такого наследника, что используется на практике, а не сферического со 100500 методами, что никак не влияют на реализацию контракта интерфейса.покажи хотя бы пару слов, объединенным общим смыслом. Слив засчитан. Вот тебе пара слов, объединенных общим смыслом. Улавливаешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 08:51 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123а у тебя почему то глобальные претензии на 11 страниц. Я все свои выводы сделал на 4-ой странице. 2 Сон Веры Павловны Слушай, зачем ты повторяешь одно и то же из страницы в страницу? Знаешь, чего это признак? Я веду речь о другом. Тот факт, что класс реализует интерфейс и непосредственно реализует этот интерфейсах в своих методах - не даёт однозначной гарантии, что будучи приведённым к типу интерфейса - будут вызваны именно его методы. Вот имея на входе только эту информацию - нельзя сделать однозначный вывод об использовании. Мне это кажется неоднозначным и неудобным. ВСЁ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 09:08 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
MSDNclass can provide an implementation of an interface only one time and only if the class declares the interface as part of the definition of the class (class ClassName : InterfaceName). If the interface is inherited because you inherited a base class that implements the interface, the base class provides the implementation of the members of the interface. Формально вы правы. Но лишь формально. Это всё равно что вываливать сюда простыни IL-кода, и апеллировать к ним. Мне интересно, почему вы не включили в цитату следующую прямо за ней фразу MSDNHowever, the derived class can reimplement the interface members instead of using the inherited implementation. Формально да - реализует. Фактически - встаёт вопрос - как реализует. Наследуя реализацию от базового или ре-имплементируя интерфейс у себя. Самое простое - отказаться от new в принципе, и больше не забивать себе голову. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 09:17 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyAddxМне, как пользователю классаВерно, ты не программист, ты пользователь. [/quot] Увы, все наоборот. Программист при словах "пользователь класса" и "клиент" представляет вовсе не бабушку за клавиатурой или скучающего дядю в кафешке. Разумеется, смысл моих постов при этом от Вас ускользает. Жаль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 09:37 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомСамое простое - отказаться от new в принципе, и больше не забивать себе голову. Ну слава те хоспади А я о чём? Объявить переопределение вне закона. Максимум где это может потребоваться, в какой-нибудь ущербной кодогенерации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 13:34 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttОбъявить переопределение **ть перекрытие, хотел сказать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 13:35 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
это новое воплощение cdtyjv, т.е. свеном'а? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 13:41 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
buser, Свято место пусто не бывает)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 14:21 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
skyANAAntonariyпропущено... покажи хотя бы пару слов, объединенным общим смыслом. Слив засчитан. Вот тебе пара слов, объединенных общим смыслом. Улавливаешь?Ага, свой потолок смысла ты продемонстрировал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 16:09 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVostt Соответственно, ты можешь выбрать любое другое имя для нового метода, чё ты прицепился к переопределению? На кой хрен? Что тебе это даст?Блин, не теряй хронологию событий. Еще раз: 2010 год) Ты взял какой-то бинарник xxx, унаследовался от его класса yyy, добавил метод zzz, создал свой бинарник и распространил по миру. 2011 год) Твой бинарник распространился, метод zzz дергают все, кому не лень 2012 год) Бинарник xxx обновился, в классе yyy появился собственный метод zzz, в результате в твоем проекте в классе, который унаследовал zzz, появилось перекрытие, компилятор ругается. 2013 год) твои действия? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 16:21 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Antonariy, Это собственно и все, что нужно знать, почему есть модификатор new. Хотя еще один вариант, который вижу, если в базовом классе член помечен атрибутом и это нужно отменить в классе наследнике. Но это побочный эффект от первого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 16:51 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Antonariy2010 год) Ты взял какой-то бинарник xxx, унаследовался от его класса yyy, добавил метод zzz, создал свой бинарник и распространил по миру. 2011 год) Твой бинарник распространился, метод zzz дергают все, кому не лень 2012 год) Бинарник xxx обновился, в классе yyy появился собственный метод zzz, в результате в твоем проекте в классе, который унаследовал zzz, появилось перекрытие, компилятор ругается. 2013 год) твои действия? сделаю вместо своего унаследованного класса декоратор, если уж на то пошло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 16:58 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВAntonariy, Это собственно и все, что нужно знать, почему есть модификатор new.Да. И именно этот кейс описан в МСДН, только почему-то доходит он до аудитории со скрипом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 17:02 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttсделаю вместо своего унаследованного класса декоратор, если уж на то пошлоТак в 2012 году пол-мира твой класс заюзало, предлагаешь всем тонны g-кода рефакторить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 17:13 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
пардон, в 2011м ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 17:15 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyhVosttсделаю вместо своего унаследованного класса декоратор, если уж на то пошлоТак в 2012 году пол-мира твой класс заюзало, предлагаешь всем тонны g-кода рефакторить? А смотря как они используют "мой" класс. Если они используют мою реализацию, но передают по ссылке на базовый класс, то твоё перекрытие не поможет. А так, если это просто какой-то метод и никакое ООП не используется, тогда декоратор. Пол мира скачает новую версию моей либы и всё у них будет работать, так как наименование и сигнатура класса останется, только он уж не будет переопределять чужой класс, а внутри его переиспользовать как мне надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 17:38 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVostt, Не вижу версионирования в ваших играх на пол мира. Версия 3.4.567.4 уже не работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 17:57 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttЕсли они используют мою реализацию, но передают по ссылке на базовый класс, то твоё перекрытие не поможет. Хвост, ты не чувствуешь всю глубину момента! Если они используют свой метод, который есть только в наследнике, то его нет в базовом классе и по ссылке на базовый класс его вызвать нельзя, компилятор не даст. Вот такая картина маслом! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 18:24 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВХвост, ты не чувствуешь всю глубину момента! Если они используют свой метод, который есть только в наследнике, то его нет в базовом классе и по ссылке на базовый класс его вызвать нельзя, компилятор не даст. Вот такая картина маслом! Ну дык я о чём и говорю. Перекрытие не окажет влияние при передаче по ссылке на базовый класс. А по сути классы так и используются, эт ж ООП. То на что ВИПРОС морщит нос )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 18:32 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttПол мира скачает новую версию моей либы и всё у них будет работать, так как наименование и сигнатура класса останется, только он уж не будет переопределять чужой класс, а внутри его переиспользовать как мне надо.ЯННП с этими переопределениями и переиспользованиями. Вот пример: Код: 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. Как ты без new избавишься от предупреждения о перекрытии, чтобы чужой код не пришлось менять? В упор не вижу, куда тут декоратор можно воткнуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 23:31 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Локализаторам студии стали больше денег платить :)) В 2012й (в которой сейчас писал) предупреждение звучит "используйте новое ключевое слово" вместо "используйте ключевое слово new". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2018, 23:38 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Мальчики и девочки, соблюдайте принципы объектно-ориентированного проектирования! Они как раз про то, чтобы не было больно, когда вдруг что-то меняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 04:25 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyЛокализаторам студии стали больше денег платить :)) В 2012й (в которой сейчас писал) предупреждение звучит "используйте новое ключевое слово" вместо "используйте ключевое слово new". Немедленно вспоминается, как в одной старой игрушке студия Фаргус перевела названия переменных в скриптах на русский, в итоге что-то ключевое переставало работать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 05:53 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyКак ты без new избавишься от предупреждения о перекрытии,выше было - #pragma ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 06:29 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Сразу в настройках проекта указать Suppress warnings: 108, и вся недолга. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 07:08 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyКак ты без new избавишься от предупреждения о перекрытии, чтобы чужой код не пришлось менять? В упор не вижу, куда тут декоратор можно воткнуть. У тебя проблема здесь: Antonariy Код: c# 1. 2. 3. 4. 5. Давай ты поменяешь var на BaseBinary? И посмотрим, что у тебя получится в итоге. Потому что именно так оно обычно используется. А если тебе нужно просто какой-то метод вызвать и пофигу в каком он классе, создай отдельный класс. Зачем пихать в текущий? Декоратор нужен, когда у тебя два разных интерфейса. А метод с другой семантикой, но одним и тем же именем -- это намёк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 11:20 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Antonariy, Вот пример по версионности сегодня встретил: авторИзменения в версии 4.0 Из-за подавляющей боли , устраняющей ошибку № 205 - Внедряя стратегию версии сборки , мы реорганизовали библиотеки в одну библиотеку System.Reactive. Чтобы предотвратить нарушение существующего кода, который ссылается на библиотеки v3, у нас есть фасады с TypeForwarders для новой сборки. Если у вас есть ссылка на двоичный файл, созданный против v3.0, используйте новый System.Reactive.Compatibilityпакет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 11:58 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Обратная совместимость - миф ) Помнится, попытался запустить прогу, написанную под Access 2.0 в Access 95 (это следующая версия, если кто не в курсе) - хрена с два она заработала - вывалилась гора ошибок. С тех пор у меня пропала вера в совместимость, и я очень не люблю обновлять любые библиотеки, а когда вынужден - заранее выделяю на это много времени и тщательно готовлю откат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 12:02 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Shocker.ProОбратная совместимость - миф )без сомнения. И даже MS сам ее постоянно ломает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 12:15 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVostt Давай ты поменяешь var на BaseBinary? И посмотрим, что у тебя получится в итоге. Потому что именно так оно обычно используется. До вас не достучаться. А уважаемый Хвост возможно знает иные способы вызова методов, акромя как через ссылку на класс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 12:16 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВ, Он про автоприведение типов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 12:22 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Shocker.ProОбратная совместимость - миф ) Помнится, попытался запустить прогу, написанную под Access 2.0 в Access 95 (это следующая версия, если кто не в курсе) - хрена с два она заработала - вывалилась гора ошибок. С тех пор у меня пропала вера в совместимость, и я очень не люблю обновлять любые библиотеки, а когда вынужден - заранее выделяю на это много времени и тщательно готовлю откат. Вроде не для кого уже не секрет, что если изменилась мажорная версия, то смотри, а нет-ли каких-либо breaking changes. Если минорная версия меняется, то ничего падать не должно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 12:31 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Внешняя библиотека 2017 Код: c# 1. 2. Мой код Код: c# 1. 2. 3. 4. 5. 6. 7. 8. Обновление внешней библиотеки, 2019 год Код: c# 1. 2. 3. 4. void Test() { M1();//что должен сделать компилятор при обновлении библиотеки? } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 12:47 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttAntonariyКак ты без new избавишься от предупреждения о перекрытии, чтобы чужой код не пришлось менять? В упор не вижу, куда тут декоратор можно воткнуть. У тебя проблема здесь: Antonariy Код: c# 1. 2. 3. 4. 5. Давай ты поменяешь var на BaseBinary? А я тут при чем? Это не у меня проблема, а у твоей клиентуры, которая заюзала твой бинарник таким вот способом. Это уже готовые программные продукты при всех их архитектурных недостатках. И это не фантастика, ты сам прекрасно осознаешь, как слабо местный контингент ориентируется в паттернах на твоем фоне. Это - условие задачи, не перекраивай его под свое видение идеальной вселенной. Перекраивать ты можешь только "свой" код, и все способы кройки и шитья твоего кода сводятся в две группы: в одной процитированный говнокод перестает работать и требует рефакторинга, в другой продолжает работать, как будто ничего не случилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 12:58 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВчто должен сделать компилятор при обновлении библиотеки? а new чем тут поможет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 13:01 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВ, Оператор new не перекрывает метод. Перекрывает одинаковое имя метода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 13:02 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123ЕвгенийВчто должен сделать компилятор при обновлении библиотеки? а new чем тут поможет? Компилятор подставит new самостоятельно и выкинет предупреждение. Это позволит коду по прежнему продолжать работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 13:15 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВКомпилятор подставит new самостоятельноэто как? Поправит мой код? Серьезно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 13:17 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВ, Блин, я у студии а ты когда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 13:19 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123ЕвгенийВКомпилятор подставит new самостоятельноэто как? Поправит мой код? Серьезно? Вот именно, поправит код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 13:23 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВВот именно, поправит код.как протестировать. Я поражен что он без согласия правит код. Буду проверять. При открытии проекта? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 13:25 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123ЕвгенийВВот именно, поправит код.как протестировать. Я поражен что он без согласия правит код. Буду проверять. При открытии проекта? Да блин, компилятор . Не в исходниках же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 14:10 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Хотя, у меня студья правила код. Пряма в сырцах, *ука. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 14:10 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом, Дык код правится или нет без ответа Да программиста? )))))))))) LOL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 14:18 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомХотя, у меня студья правила код. Пряма в сырцах, *ука.у тебя студия отшельника) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 14:19 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123Агнец за бортом, Дык код правится или нет без ответа Да программиста? )))))))))) LOL И да и нет. В лучших традициях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 14:26 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортом, Врете вы все. Компилятор не правит код сам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 14:42 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВДо вас не достучаться. А уважаемый Хвост возможно знает иные способы вызова методов, акромя как через ссылку на класс? Я же привёл в этой ветке пример с классом Stream. Почитай плз и задай ещё раз вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 16:07 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВvoid Test() { M1();//что должен сделать компилятор при обновлении библиотеки? } Сказать, что ты не прав. Что делать, если ты вдруг решил заменить фундамент дома? Т.е. C# тебе позволяет использовать перекрытие с помощью new. Только вот нафига? Т.е. это ничего не решает, ничего не даёт хорошего, но приводит к большим проблемам в перспективе. Задача: должно скомпилироваться, это знаешь, задача мягко говоря так себе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 16:11 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyПерекраивать ты можешь только "свой" код, и все способы кройки и шитья твоего кода сводятся в две группы: в одной процитированный говнокод перестает работать и требует рефакторинга, в другой продолжает работать, как будто ничего не случилось. Ну обычно это решается адаптерами и декораторами. Это известные способы решения проблем совместимости с чужими библиотеками и их изменениями. Перекрытие new -- это НЕ решение. Это даже не ad hoc, это п&(_#@ц. Вот что это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 16:13 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВЭто позволит коду по прежнему продолжать работать. Вопрос, правильно ли? ХЗ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 16:13 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttЕвгенийВДо вас не достучаться. А уважаемый Хвост возможно знает иные способы вызова методов, акромя как через ссылку на класс? Я же привёл в этой ветке пример с классом Stream. Почитай плз и задай ещё раз вопрос. Дай ссылку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 16:42 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttЕвгенийВЭто позволит коду по прежнему продолжать работать. Вопрос, правильно ли? ХЗ. Дизайнеры языка решили, что это меньшее из зол. С этим надо жить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 16:45 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVostt Ну обычно это решается адаптерами и декораторами. Это известные способы решения проблем совместимости с чужими библиотеками и их изменениями. Т. е. у тебя есть такая "маленькая" библиотечка, в которой как минимум на каждый класс и структуру из стандартной библиотеки .NET по декоратору и адаптору? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 16:49 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВТ. е. у тебя есть такая "маленькая" библиотечка, в которой как минимум на каждый класс и структуру из стандартной библиотеки .NET по декоратору и адаптору?А ты обычно занимаешься наследованием всех классов NET? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 17:06 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Shocker.ProЕвгенийВТ. е. у тебя есть такая "маленькая" библиотечка, в которой как минимум на каждый класс и структуру из стандартной библиотеки .NET по декоратору и адаптору?А ты обычно занимаешься наследованием всех классов NET? Если это необходимо. Если писать провайдер для entity framework core или писать кастомную реализацию asp net identity core, то там наследования - мама не горюй. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 17:13 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВв которой как минимум на каждый класс и структуру из стандартной библиотекиЕвгенийВЕсли это необходимо.Так ты определись, на каждый или нет ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 17:30 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВДизайнеры языка решили, что это меньшее из зол. С этим надо жить. Не, ну погоди. Дизайнеры языка не боги и тоже совершают ошибки. Понятное дело, что для обратной совместимости так просто баги не поправить. Но это не означает, что надо использовать всё, что предоставляет язык, в том числе откровенно плохие, не эффективные и вредные решения. Перекрытие метода -- одно из таких решений. И лично я видел только одно сомнительно оправданное применение -- кодогенерация. То, о чём идёт тред, не оправдано. Какие-то чужие либы, основанные на них мои либы, которые тоже для кого-то чужие. Это какой-то ппц, придумать можно любую ситуацию вплоть до того: а что ты будешь делать, если завтра пойдёт дождь из кирпичей, а у тебя кончилось молоко, а??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 18:06 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВhVosttНу обычно это решается адаптерами и декораторами. Это известные способы решения проблем совместимости с чужими библиотеками и их изменениями. Т. е. у тебя есть такая "маленькая" библиотечка, в которой как минимум на каждый класс и структуру из стандартной библиотеки .NET по декоратору и адаптору? Зачем? Есть определённые ситуации, когда это нужно. Описаны в литературе, опытный разработчик в состоянии понять когда и что используется. Также опытный разработчик не допускает таких тупых ситуаций. А кода они всё-таки возникают, то рефакторит. Разработка это живой процесс, а не забетонированный. Не надо рассказывать про какую-то чужую библиотеку, которая закрыта за семью печатями, а на неё завязано +100500 реализаций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 18:10 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВhVosttпропущено... Я же привёл в этой ветке пример с классом Stream. Почитай плз и задай ещё раз вопрос. Дай ссылку. 21714398 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 18:11 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttа что ты будешь делать, если завтра пойдёт дождь из кирпичей, а у тебя кончилось молоко, а???+1 Кто не понял этот топик предлагаю придумать новый отмаз для new. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 18:42 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Меня все время занимает вопрос. А зачем нужны такие сложные наследования? Хотелось бы увидеть пример на реальных проблемах. Наверное у меня настолько сложных задач не возникает или я их решаю более простыми средствами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 19:44 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Cat2такие сложные наследования Какие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 19:48 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомCat2такие сложные наследования Какие? Зачем нужен интерфейс для базового класса? Все его фичи можно и в базовом классе описать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 19:58 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Cat2Агнец за бортомпропущено... Какие? Зачем нужен интерфейс для базового класса? Все его фичи можно и в базовом классе описать. Интерфейс - это обещание реализации. Зачастую, вариантов этих реализаций - несколько. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 20:03 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Агнец за бортомCat2пропущено... Зачем нужен интерфейс для базового класса? Все его фичи можно и в базовом классе описать. Интерфейс - это обещание реализации. Зачастую, вариантов этих реализаций - несколько. В базовом классе несколько вариантов реализации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 20:08 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Cat2Зачем нужен интерфейс для базового класса? А, ну я не знаю. У меня нет "базового" класса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2018, 20:46 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Cat2Агнец за бортомпропущено... Какие? Зачем нужен интерфейс для базового класса? Все его фичи можно и в базовом классе описать. Например для ко/контр-вариантности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2018, 12:24 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttЕвгенийВпропущено... Дай ссылку. 21714398 Это не совсем то, вернее совсем не то. hVosttТак почему бы не добавить свой метод MySuperCopyTo и не ипать никому мозг? Просто не понимаю. А если после того, как ты добавишь MySuperCopyTo, метод с таким именем появится в .NET Framework 100500 версии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2018, 12:28 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВкак ты добавишь MySuperCopyTo, метод с таким именем появится в .NET Framework 100500 версии?а нужен? Это же твой метод для твоего наследника. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2018, 12:53 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВА если после того, как ты добавишь MySuperCopyTo, метод с таким именем появится в .NET Framework 100500 версии? И что? То, что ты его перекроешь своей реализацией означает, что через ссылку на базовый класс вызовут чужой метод, а прямые ссылки на твой класс твою, даже если ожидали чужую. Т.е. это примерно как прикрыть какашку газеткой. Решение -- огонь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2018, 13:54 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVostt И что? То, что ты его перекроешь своей реализацией означает, что через ссылку на базовый класс вызовут чужой метод, а прямые ссылки на твой класс твою, даже если ожидали чужую. Через ссылку на базовый класс я не смогу вызвать свой метод, который есть только в моем наследнике! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2018, 14:17 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВЧерез ссылку на базовый класс я не смогу вызвать свой метод, который есть только в моем наследнике!полиморфизма тут нам еще не хватало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2018, 14:20 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВhVosttИ что? То, что ты его перекроешь своей реализацией означает, что через ссылку на базовый класс вызовут чужой метод, а прямые ссылки на твой класс твою, даже если ожидали чужую. Через ссылку на базовый класс я не смогу вызвать свой метод, который есть только в моем наследнике! Именно. Вообще, появление метода с такой же сигнатурой, как в твоём наследнике сигнализирует о том, что тебе придётся зарефакторить, так как путей выстрелить в ногу становится овер дофига. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2018, 15:12 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВCat2пропущено... Зачем нужен интерфейс для базового класса? Все его фичи можно и в базовом классе описать. Например для ко/контр-вариантности. Примерчик можно? На классе "Животное", который мы все знаем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2018, 18:54 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Cat2Примерчик можно? https://www.google.com/search?q=c# covariance example -> https://stackoverflow.com/questions/2662369/covariance-and-contravariance-real-world-example ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2018, 06:25 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
А можно унаследовать только часть членов класса? "При определении класса для наследования от другого класса производный класс явно получает все члены базового класса за исключением конструкторов и методов завершения. " Суть: не могу сериализовать частично записи с помощью JsonConvert.SerializeObject() . ....а переделывать классы кажется неправильным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2018, 23:48 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
SIMPLicity_ А можно унаследовать только часть членов класса? "При определении класса для наследования от другого класса производный класс явно получает все члены базового класса за исключением конструкторов и методов завершения. " Суть: не могу сериализовать частично записи с помощью JsonConvert.SerializeObject() . ....а переделывать классы кажется неправильным. Решил по другому ( поменял int на Nullable<int>, все ненужные сделал null и указал сериализатору игнорировать null-поля : NullValueHandling = NullValueHandling.Ignore ). Но вопрос с наследованием остался . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2018, 00:53 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
SIMPLicity_, Тему зачем подымать? Твой вопрос по сериализатору. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2018, 07:16 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Petro123SIMPLicity_, Тему зачем подымать? Твой вопрос по сериализатору. Не. Изначально - по наследованию. Сериализация - частный вопрос (так сказать,- "морда проблемы" или "вершина айсберга"), в данной ситуации решение было костылём (компромиссным и удачным, но всё равно - костылём) . Поэтому вопрос именно в теме по наследованию и интерфейсам... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2018, 18:33 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
SIMPLicity_, Значит сформулируй вопрос по новой без сериализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2018, 19:09 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Таки для чего нужен new :) Боевой пример: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Суть в том, что берется IEnumerable<T> (в данном случае CompanyFields), превращается в object[,] и отдается в эксель. А что происходит в экселе? Правильно, эксель воспринимает эти коды как числа, и ладно бы просто воспринимал, так числа больше 10 12 (ОГРН) он выводит в экспоненциальном виде, но апостроф перед числом принудительно форматирует его как текст. Таким образом, подмена полей в наследнике это наиболее дешевый способ лечения данного косяка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 18:26 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyТаки для чего нужен new :)"new" на данное поведение никак не влияет, можешь убрать и проверить )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 19:17 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyТаким образом, подмена полей в наследнике это наиболее дешевый способ лечения данного косяка. Дешёвый это задать тип ячейки, а это адский костыль в кубе :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 19:38 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Shocker.ProAntonariyТаки для чего нужен new :)"new" на данное поведение никак не влияет, можешь убрать и проверить )) Тогда компилятор его подставит и выдаст ворнинг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 19:53 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttДешёвый это задать тип ячейкиТы просто мало работал с экселем ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 20:01 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Shocker.ProhVosttДешёвый это задать тип ячейкиТы просто мало работал с экселем ))) та не, опыта хватает. в энтерпрайзе его наелся по самое нимагу ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 20:38 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttAntonariyТаким образом, подмена полей в наследнике это наиболее дешевый способ лечения данного косяка. Дешёвый это задать тип ячейки, а это адский костыль в кубе :)Ты просто не знаешь, какова задача. В ее контексте ты предложил такой адский треш, что ни в сказке сказать, ни пером описать. А контекст - функция листа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 22:24 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyТы просто не знаешь, какова задача. В ее контексте ты предложил такой адский треш, что ни в сказке сказать, ни пером описать. А контекст - функция листа. Ну как же незнаю, ты её описал. Изначально задача решена через одно место, раз понадобились такие костыли :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 22:30 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Помимо этого, ты предлагаешь заменить решение, 99% которого у тебя перед глазами, написанное декларативным языком, понятным даже умственно неполноценному джуниору, на императивный говнокод. Все равно что вместо linq использовать циклы. Это не считая того, что если бы это был макрос, то твое решение засрало бы универсальный дженерик-метод, требованиями конкретной модели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 22:33 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttAntonariyТы просто не знаешь, какова задача. В ее контексте ты предложил такой адский треш, что ни в сказке сказать, ни пером описать. А контекст - функция листа. Ну как же незнаю, ты её описал. Изначально задача решена через одно место, раз понадобились такие костыли :)похоже твой опыт работы с экселем годится только для того, чтобы тыкать в него палочкой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 22:34 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyПомимо этого, ты предлагаешь заменить решение, 99% которого у тебя перед глазами, написанное декларативным языком, понятным даже умственно неполноценному джуниору, на императивный говнокод. Все равно что вместо linq использовать циклы. Это не считая того, что если бы это был макрос, то твое решение засрало бы универсальный дженерик-метод, требованиями конкретной модели. Не кипятись :) Для решения задачи установки типа ячейки по типу значения хватит и уровня джуна. А решение задачи через префикс ' -- решение для домохозяек, это известный костыль для тех, кто не умеет работать с экселем :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 22:40 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttAntonariyПомимо этого, ты предлагаешь заменить решение, 99% которого у тебя перед глазами, написанное декларативным языком, понятным даже умственно неполноценному джуниору, на императивный говнокод. Все равно что вместо linq использовать циклы. Это не считая того, что если бы это был макрос, то твое решение засрало бы универсальный дженерик-метод, требованиями конкретной модели. Не кипятись :) Для решения задачи установки типа ячейки по типу значения хватит и уровня джуна. А решение задачи через префикс ' -- решение для домохозяек, это известный костыль для тех, кто не умеет работать с экселем :)чудак человек, ты хоть в курсе, что функция листа экселя не имеет права ничего делать на листе, кроме возврата значения в него? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 22:50 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Antonariyчудак человек, ты хоть в курсе, что функция листа экселя не имеет права ничего делать на листе, кроме возврата значения в него? я до сих пор не понимаю, чего ты так защищаешь говнокод :) да, изредко бывает, что проще какое-то разовое решение наговнокодить на коленке, если на выброс, но не говорить, что это вполне себе "боевое решение" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 23:00 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttAntonariyчудак человек, ты хоть в курсе, что функция листа экселя не имеет права ничего делать на листе, кроме возврата значения в него? я до сих пор не понимаюна этом мог бы и остановить излияния, твой уровень владения предметом уже понятен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 23:01 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Antonariyпохоже твой опыт работы с экселем годится только для того, чтобы тыкать в него палочкой опыт позволяет не создавать самому себе нелепые тупиковые ситуации, а находить надёжные, расширяемые решения. я хз где вы там проблемы себе находите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 23:02 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttAntonariyпохоже твой опыт работы с экселем годится только для того, чтобы тыкать в него палочкой опыт позволяет не создавать самому себе нелепые тупиковые ситуации, а находить надёжные, расширяемые решения. я хз где вы там проблемы себе находите.бла бла бла ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 23:03 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Antonariyна этом мог бы и остановить излияния, твой уровень владения предметом уже понятен. ну слушай. я могу задать тип ячейки, а ты не можешь, что вынужден городить уродливые костыли. о каком уровне ты нам тут заливаешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 23:04 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Што тута понимают под словом "функия Экселя"? PS Если у нас целая колонка ОГРН-ов то, простите мой португальский,- какого х@я бы не сделать разом столбец (или диапазон) текстовым?! Вы ужо меня извеняйте, но оформительская операция над ячейкой в MSExcel занимает почти столько же времени (а, возможно,- и всех ресурсов вообще) сколько над диапазоном. С кальком, ЕМНИП, дело лучше обстоит. PPS Может быть, конечно, чего-нить за сто лет-то и поменялось.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 23:06 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
SIMPLicity_PS Если у нас целая колонка ОГРН-ов то, простите мой португальский,- какого х@я бы не сделать разом столбец (или диапазон) текстовым?! Вы ужо меня извеняйте, но оформительская операция над ячейкой в MSExcel занимает почти столько же времени (а, возможно,- и всех ресурсов вообще) сколько над диапазоном. С кальком, ЕМНИП, дело лучше обстоит. PPS Может быть, конечно, чего-нить за сто лет-то и поменялось.... ничё не поменялось. печаль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 23:06 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVostt, слушай, в части понимание где Excel, какие у него внутренние типы данных хранения, как они отличаются от форматированного представления в клетке, как Excel принимает значения, и почему не нужно золота форматирования клеток ему, Antonariy тебя побьёт с завязанными чёрной лентой глазами. Даже если на самом деле пишет говнокод. Просто попробуй учесть это обстоятельство. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 23:12 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
boobyhVostt, слушай, в части понимание где Excel, какие у него внутренние типы данных хранения, как они отличаются от форматированного представления в клетке, как Excel принимает значения, и почему не нужно золота форматирования клеток ему, Antonariy тебя побьёт с завязанными чёрной лентой глазами. Даже если на самом деле пишет говнокод. Просто попробуй учесть это обстоятельство. да я не против, никого не осуждаю за говнокод ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 23:16 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttAntonariyна этом мог бы и остановить излияния, твой уровень владения предметом уже понятен. ну слушай. я могу задать тип ячейкиок, авось через пару лет научишься и шрифт менять))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 23:16 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
booby, на текущий момент я ревностно отношусь к написанию говнокода только к тем, кто стремиться быть и оставаться профессиональным разработчиком. но как к способу хоть как-то решить задачу, а там трава не расти, довольно прохладно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 23:17 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
SIMPLicity_Што тута понимают под словом "функия Экселя"?Функция ЛИСТА экселя. Это та хрень, которая пишется в ячейку после знака равенства. SIMPLicity_PS Если у нас целая колонка ОГРН-ов то, простите мой португальский,- какого х@я бы не сделать разом столбец (или диапазон) текстовым?!Такого, что функции листа этим не занимаются. В принципе. Этим занимаются макросы. А конкретно та функция листа, которая выводит ОГРНы - функция-массив. То есть она занимает не ячейку, а диапазон. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 23:21 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Antonariyок, авось через пару лет научишься и шрифт менять))) есть проблема, значение с одинарной кавычкой в ячейке, сохраняется вместе с кавычкой а в текстовой ячейке число сохраняется без кавычки я просто думал, что такие "решения" канули в лету ещё лет 10 назад ан нет. продолжают жить и здравствовать. покажешь как наяривая палочкой разжечь костёр? )))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 23:23 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttbooby, на текущий момент я ревностно отношусь к написанию говнокода только к тем, кто стремиться быть и оставаться профессиональным разработчиком. но как к способу хоть как-то решить задачу, а там трава не расти, довольно прохладно. это частное мнение, выраженное по абстрактному вопросу. Утверждение об умении задать текстовый формат ячейки листа, наоборот, конкретно. И, если к утверждению абстрактному, самому по себе, можно не относиться никак, то утверждение конкретное даёт оценочный хинт и для абстрактных суждений. Это к вопросу о говнокоде. Кто поверит общей оценке, если не верит в частную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 23:26 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
boobyэто частное мнение, выраженное по абстрактному вопросу. Утверждение об умении задать текстовый формат ячейки листа, наоборот, конкретно. И, если к утверждению абстрактному, самому по себе, можно не относиться никак, то утверждение конкретное даёт оценочный хинт и для абстрактных суждений. Это к вопросу о говнокоде. Кто поверит общей оценке, если не верит в частную. ну хз. возможно в этом и был какой-то смысл, автор его скрыл, затем набросился с пеной, дескать вы же задачи не знаете, но осуждаете. типа как будто кто-то запрещал раскрыть ему детали задачи, вместо того, чтобы умничать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 23:28 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttAntonariyок, авось через пару лет научишься и шрифт менять))) есть проблема, значение с одинарной кавычкой в ячейке, сохраняется вместе с кавычкойОдинарная кавычка называется апостроф. Ты не в курсе или тебя прикалывает писать "одинарная кавычка"? Лучше бы тебя волновали проблемы пользователей, а не экселя. Тем более, что у него проблем нет, пусть хранит как хочет. Главное, что он отдает эти данные наружу без апострофов - попробуй скопипастить в блокнот. Апостроф это декорация, а не данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 23:38 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
hVosttboobyэто частное мнение, выраженное по абстрактному вопросу. Утверждение об умении задать текстовый формат ячейки листа, наоборот, конкретно. И, если к утверждению абстрактному, самому по себе, можно не относиться никак, то утверждение конкретное даёт оценочный хинт и для абстрактных суждений. Это к вопросу о говнокоде. Кто поверит общей оценке, если не верит в частную. ну хз. возможно в этом и был какой-то смысл, автор его скрыл, затем набросился с пеной, дескать вы же задачи не знаете, но осуждаете. типа как будто кто-то запрещал раскрыть ему детали задачи, вместо того, чтобы умничать :)Я вторым сообщением написал, что дело происходит в функции листа. Но ты не отдуплил, стал настаивать на своем. А теперь завращал тухесом как Карлсон вентилятором. Красава, чо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2019, 23:49 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Antonariy... дело происходит в функции листа... Разумно написанная скалярная функция листа должна возвращать Variant. И вся задача - правильно сформировать подтип этого вариант и значение, соответствующее подтипу. Апостроф для строк, состоящих из чисел, именно в контексте скалярной функции листа не требуется , независимо от способа форматирования клетки. По крайней мере в VBA. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 00:35 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
Дело происходит не в вба. И длинные числа не единственый нюанс. Например, эксель не понимает даты старше конца 19го века (есть такие даты основания банков), при попытке присвоить такую дату эксель выдает эксепшн, ее нужно конвертировать в строку. Причем, если присваиваешь массив, то присваивпется все, кроме этой даты, несмотря на эксепшн. Правда, этот нюанс обходится без наследования и new. В общем, это была лишь демонстрация того, что от new есть не только теоретическая польза. Впрочем, как справедливо заметили, это работает и без new, но чем меньше ворчит компилятор, тем лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 01:45 |
|
||
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#18+
AntonariyЯ вторым сообщением написал, что дело происходит в функции листа. Но ты не отдуплил, стал настаивать на своем. А теперь завращал тухесом как Карлсон вентилятором. Красава, чо. чего ты так возбудился-то? ) видимо задел за живое. ладна-ладна, ты бох экселя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2019, 16:49 |
|
||
|
|

start [/forum/topic.php?all=1&fid=20&tid=1398780]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
333ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 453ms |

| 0 / 0 |
