Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.156] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 319 320 [321] 322 323 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#4801
,
|
|
|
|
Цитата D_KEY @ Я плохо читал вашу ветку обсуждения, может не так понял. Но, например, виртуальные методы я часто делаю не просто защищенными, но и закрытыми, оставляя в public невиртуальный интерфейс. Или вы о чем-то другом? Закрытыми - это в привате? А какой смысл тогда в их виртуальности, перекрыть же нельзя? |
|
Сообщ.
#4802
,
|
|
|
|
Цитата D_KEY @ Я плохо читал вашу ветку обсуждения, может не так понял. Но, например, виртуальные методы я часто делаю не просто защищенными, но и закрытыми, оставляя в public невиртуальный интерфейс. Или вы о чем-то другом? не, мы тут немного о другом, а так как ты делаешь, я где-то читал, что так и надо |
|
Сообщ.
#4803
,
|
|
|
|
Цитата korvin @ еще map вместо известной функции является ассоциативным массивом, было еще что-то, но сейчас не вспомню Ну да, какой-нибудь dict был бы логичнее. С другой стороны, transform более подходит, чем map. Но это наименование функции/типа, в принципе, ничего страшного. Добавлено Цитата Romkin @ Цитата D_KEY @ Я плохо читал вашу ветку обсуждения, может не так понял. Но, например, виртуальные методы я часто делаю не просто защищенными, но и закрытыми, оставляя в public невиртуальный интерфейс. Или вы о чем-то другом? Закрытыми - это в привате? А какой смысл тогда в их виртуальности, перекрыть же нельзя? Не знаю, как в Delphi, в С++/C#/Java можно. |
|
Сообщ.
#4804
,
|
|
|
|
Т.е. класс реализующий интерфейс, помимо того что реализует интерфейс, еще и предоставляет какието методы? А зачем? Почему их не вынести в интерфейс? Вспомогательные же методы, для реализации интерфейса делать открытыми - зачем? Цитата Romkin @ 2. Открытые методы в объекте подразумевают их открытое использование, зачем тогда интерфейс? Для удовлетворения ограниченности языка? Как зачем? За тем, чтобы гибко реализовать динамический полиморфизм. Т.е. имея интерфейс, ты можешь в рантайме менять для него реализации. Цитата Romkin @ 3. Класс может обладать своим функционалом. А может и не обладать. Речь совершенно не о том. А. Тоесть класс, этот не просто реализует интерфейс, он еще и сам предоставляет какой то функционал, который к интерфейсу не относится? И зачем мне такой класс? Типо на все случаи жизни, нет функциональности в интерфейсе - не проблема, ща возьмем класс, реализующий этот интерфейс, и к нему прикрутим/у него возьмем этот функционал. гениально. |
|
Сообщ.
#4805
,
|
|
|
|
Цитата D_KEY @ Я плохо читал вашу ветку обсуждения, может не так понял. Но, например, виртуальные методы я часто делаю не просто защищенными, но и закрытыми, оставляя в public невиртуальный интерфейс. Или вы о чем-то другом? Ну, как я понимаю, они у тебя изначально приватные/защищённые. Т.е. определяют конкретную реализацию и вызываются из невиртуального метода. Не буду столь категоричен Цитата korvin @ я где-то читал, что так и надо но когда выгодно тоже применяю такой подход. Romkin же, переводя на твой пример, занимается понижением видимости, т.е. если бы ты виртуальный метод объявил публичным, а вот в потомке - приватным. И поскольку для его вызова надо скастовать к предку, то вышеупомянутый оратор называет это каким-то там разделением и сокрытием. |
|
Сообщ.
#4806
,
|
|
|
|
А зачем она тебе? |
|
Сообщ.
#4807
,
|
|
|
|
Цитата D_KEY @ Не знаю, как в Delphi, в С++/C#/Java можно. ?! Нифига себе извращения... Чем протектед не по нраву? Цитата MyNameIsIgor @ И поскольку для его вызова надо скастовать к предку, то вышеупомянутый оратор называет это каким-то там разделением и сокрытием. Не к предку, а так принцип похож. Добавлено Цитата scorpion @ А. Тоесть класс, этот не просто реализует интерфейс, он еще и сам предоставляет какой то функционал, который к интерфейсу не относится? И зачем мне такой класс? Типо на все случаи жизни, нет функциональности в интерфейсе - не проблема, ща возьмем класс, реализующий этот интерфейс, и к нему прикрутим/у него возьмем этот функционал. гениально. Читай выше, обычно в интерфейсе реализуют дополнительный функционал. Это может быть все что угодно. |
|
Сообщ.
#4808
,
|
|
|
|
Цитата D_KEY @ Цитата Romkin @ Закрытыми - это в привате? А какой смысл тогда в их виртуальности, перекрыть же нельзя? Не знаю, как в Delphi, в С++/C#/Java можно. эм.. в Java нельзя. можно создать новый метод с такой же сигнатурой, но это и будет именно что новый метод. |
|
Сообщ.
#4809
,
|
|
|
|
Цитата MyNameIsIgor @ виртуальный метод объявил публичным, а вот в потомке - приватным. Ничего страшного не вижу, но и смысла такого действия не понимаю. Сдается мне, что и is-a тут нет. |
|
Сообщ.
#4810
,
|
|
|
|
Цитата Romkin @ Читай выше, обычно в интерфейсе реализуют дополнительный функционал. Это может быть все что угодно. не забывай добавлять "в Делфи" к таким высказываниям =) |
|
Сообщ.
#4811
,
|
|
|
|
Цитата Romkin @ Читай выше, обычно в интерфейсе реализуют дополнительный функционал. Это может быть все что угодно. А работают с классами. А интерфейсы, это так - дополнительный функционал. Я правильно понимаю? |
|
Сообщ.
#4812
,
|
|
|
|
Цитата korvin @ эм.. в Java нельзя. можно создать новый метод с такой же сигнатурой, но это и будет именно что новый метод. Уверен? Мне казалось, что я так делал. Пойду читать Если ты прав, то спасибо за поправку Добавлено Цитата Romkin @ Чем протектед не по нраву? Тем, что он позволит вызывать метод базового класса из кода производного класса. Если это нужно, то делаем protected. |
|
Сообщ.
#4813
,
|
|
|
|
Цитата D_KEY @ Цитата MyNameIsIgor @ виртуальный метод объявил публичным, а вот в потомке - приватным. Ничего страшного не вижу а как с такой возможностью нормально пользоваться сабтайпингом? если у нас функция ожидает объект класса Parent с методом foo, а туда передают объект класса Child, в котором этот метод переведен в приват? хорошо еще, что компилятор в принципе это может отследить, но весь смысл сабтайпинга на смарку =) Добавлено Цитата D_KEY @ Уверен? Мне казалось, что я так делал. Пойду читать Если ты прав, то спасибо за поправку ![]() уверен. проверено в IDEA =) |
|
Сообщ.
#4814
,
|
|
|
|
Цитата scorpion @ А работают с классами. А интерфейсы, это так - дополнительный функционал. Я правильно понимаю? Когда как. Может быть дополнительным, но можно реализовать и как основной. Если интерфейс основной, то как правило у него идет подсчет ссылок, публичные методы - только вспомогательные, и работа только с интерфейсом. |
|
Сообщ.
#4815
,
|
|
|
|
Цитата Romkin @ Когда как. Может быть дополнительным, но можно реализовать и как основной. И когда как? Пример можно привести? Зачем тогда нужен интерфейс с дополнительным функционалом? |