Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оператор переменного числа аргументов (...), приорететнее специфических параметров? 
V
    Опции темы
mbasil
Дата 23.10.2007, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 399
Регистрация: 4.5.2007
Где: Москва

Репутация: 2
Всего: 13



Господа, здесь работает перегрузка, а не полиморфизм.
Право  - даже странно, что Вы пытаетесь применить полиморфизм к данному случаю. 
PM MAIL   Вверх
pompei
Дата 24.10.2007, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.9.2007

Репутация: 1
Всего: 6



Цитата(nornad @ 19.10.2007,  16:44)
Цитата(pompei @  19.10.2007,  10:09 Найти цитируемый пост)
Только всё равно косях с их стороны остаётся: необходимо было предусмотреть такую неоднозначность, например, запрещать компилировать класс Tree из-за того что возникает эта неоднозначность.

Э... не вижу логики. Почему компилятор должен запретить компиляцию класса, который расширяет уже имеющийся? Я бы в данном случае запрещал компиляцию именно Test, т.к. в его коде идёт попытка вызвать несуществующий метод. Что, в общем-то, и делает компилятор. Мы с ним в этом вопросе выбрали одну точку зрения.  smile

Логика простая - пусть дочерний класс сколько хочет, столько и расширяет базовый, но только так, чтобы не запутать пользователя.

А запрещать компилировать класс Test нельзя, потому что он может быть в другом, уже откомпилированном пакете, и откомпилировать его мог кто-нибудь другой. А Вы вдруг ему из будущего запрещаете компилировать. Нарушаются базовые причинно-следственные связи! smile

Добавлено через 9 минут и 48 секунд
Цитата(mbasil @ 23.10.2007,  13:36)
Господа, здесь работает перегрузка, а не полиморфизм.
Право  - даже странно, что Вы пытаетесь применить полиморфизм к данному случаю.

А да точно, Вы правы. Я почемуто не заметил. Я думал под словом полиморфизм, слово перегрузка.

ЗЫ. Я вообще щитаю, что термин "перегрузка" не правильно придумали. Под словом "перегружать" ассоциируется что-то, что нужно заменить, чтобы старое определение изчезло, ну или что-то в этом духе. Можно былобы термин "перегрузить" сделать синонимом к термину "переопределить реализацию базового метода в доченем классе". А вместо "перегруженный метод" говорить "одноимённый метод" - сразу всё чётко ясно и понятно становиться. После таких рассуждений я начинаю понимать зачем появился язык Эспиранто"

--------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап.
PM MAIL   Вверх
nornad
Дата 24.10.2007, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(pompei @  24.10.2007,  12:21 Найти цитируемый пост)
Логика простая

Логика не такая уж и простая. При ней надо запрещать такое:
Код

class A { public void func(MyObject o) {} }
class B extends A { public void func(MyExtObject s) {} } // MyExtObject extends MyObject

И что мы тогда получаем? В случае, если нам требуется различный код обработки различных объектов, придётся писать if по instanceof. Имхо, различные методы в данном случае удобнее.

Цитата(pompei @  24.10.2007,  12:21 Найти цитируемый пост)
А запрещать компилировать класс Test нельзя, потому что он может быть в другом, уже откомпилированном пакете, и откомпилировать его мог кто-нибудь другой.

Цитата(nornad @  24.10.2007,  12:21 Найти цитируемый пост)
Я бы в данном случае запрещал компиляцию именно Test, т.к. в его коде идёт попытка вызвать несуществующий метод.

Другой пакет в таком случае не мог быть откомпилирован. Если же класс был изменён - перестаём компилировать Test по уже названной причине и отрываем ноги такому "изменятелю". Лучше сразу по самую шею. Нефиг нарушать свои же принцыпы - "но только так, чтобы не запутать пользователя". Нефиг вызывать то, чего нет. Пытаешься - по кумполу и в канаву. smile


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0449 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.