Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Наследование и интерфейсы.
|
|||
|---|---|---|---|
|
#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 |
|
||
|
|

start [/forum/topic.php?fid=20&msg=39722437&tid=1398780]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 256ms |
| total: | 396ms |

| 0 / 0 |
