Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.138.33.178] |
|
Страницы: (3) [1] 2 3 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Здравствуйте!
А в java принципиально невозможна перегрузка операторов? Даже в 5.0? |
Сообщ.
#2
,
|
|
|
видимо нет
в книге видел это реализуеца методам add, sub... |
Сообщ.
#3
,
|
|
|
Цитата MAxZ @ видимо нет в книге видел это реализуеца методам add, sub... то есть? наличие ф-ции add позволяет использовать "+"? Или просто пользоваться ф-циями? |
Сообщ.
#4
,
|
|
|
Цитата inc-visitor @ А в java принципиально невозможна перегрузка операторов? Даже в 5.0? Да. И надеюсь, такой возможности никогда не появится. Единственный случай перегрузки, это операция конкатенации Стрингов (оператором +). Хотя я бы задумался и о ее упразднении. На мой взгляд, она нарушает объектно-ориентированную строгость. Однако удобно, спору нет. Добавлено Цитата inc-visitor @ Или просто пользоваться ф-циями? Именно так. |
Сообщ.
#5
,
|
|
|
Цитата Lamer George @ На мой взгляд, она нарушает объектно-ориентированную строгость функции друзья не нравятся? Или ты другое имеешь ввиду? |
Сообщ.
#6
,
|
|
|
Цитата Konigsberg @ функции друзья не нравятся? Их я уже почти не помню Имхо, система пакетирования классов удобнее. Нет, я в данном случае я имел в виду перегрузку плюса. Раз строка - объект, давайте общаться с ней как с объектом, используя методы. Чего ради мы должны делать для класса String исключение? Хотя, конечно, писать конструкции вроде такой: String str = new String("string 1").append(new String("string 2")); вместо String str = "string 1" + "string 2"; было бы неудобно. |
Сообщ.
#7
,
|
|
|
Цитата Konigsberg @ На мой взгляд, она нарушает объектно-ориентированную строгость. я просто подумал, что тебе вообще перегрузка операторов не нравится, а не только конкатенация строк плюсом. Имхо, ниче плохого нет - теже методы, только записанные в "другом" виде. |
Сообщ.
#8
,
|
|
|
Цитата Konigsberg @ я просто подумал, что тебе вообще перегрузка операторов не нравится, а не только конкатенация строк плюсом. Именно так. Цитата Konigsberg @ Имхо, ниче плохого нет - теже методы, только записанные в "другом" виде. Принцип бритвы Оккама - ни к чему плодить лишних сущностей. Имхо, использование методов намного логичней. А то посмотришь на такой код: SomeObject obj1 = new SomeObject(value1); SomeObject obj2 = new SomeObject(value2); SomeObject obj3 = obj1 + obj2; Ну и как это понимать? Что значит "сложить обекты"? Куда логичнее было бы написать, например SomeObject obj1 = new SomeObject(value1); SomeObject obj2 = new SomeObject(value2); SomeObject obj3 = obj1.summarizeValues(obj2); // или так: // SomeObject obj3 = new SomeObject(obj1.getValue()+obj2.getValue()); |
Сообщ.
#9
,
|
|
|
Lamer George, а ф чём проблема нелогичного названия методоф?
невозможно сделать так, чтобы люди делали всё идеально правильно. "сделай программу к-й сможет пользоваца даже идиот и только идиот захочт ею пользоваца." также и с языками. всё равно ведь можно назвать метод add и что тогда будет значить "obj1.add(obj2)" ? я надеюсь что в яве это будет только не знаю как быть со знаком "=". |
Сообщ.
#10
,
|
|
|
Цитата MAxZ @ а ф чём проблема нелогичного названия методоф? Не понял. Я ни чего не говорил про нелогичные названия методов. Если ты имеешь в виду, что obj1 + obj2, это то же самое, что и obj1.add(obj2), я на это отвечу, что и этого следует избегать Цитата MAxZ @ невозможно сделать так, чтобы люди делали всё идеально правильно. Конечно, нет. Но желательно к этому стремиться. В том числе и с точки зрения простоты и однозначности синтаксиса. |
Сообщ.
#11
,
|
|
|
Цитата Lamer George @ я на это отвечу, что и этого следует избегать так почему? |
Сообщ.
#12
,
|
|
|
Потому что я не понимаю, что значит "сложить два объекта". Складывать можно числа. Складывать мусорные баки и вентиляторы нельзя. Если нужно сложить сумму из двух чеков, я напишу "сложить суммы по чекам", а не "сложить чеки".
|
Сообщ.
#13
,
|
|
|
Цитата Lamer George @ Ну и как это понимать? Что значит "сложить обекты"? да. никакого подвоха, все по честному вот если бы ты взял пример с минусом, и предложил вычесть из одной строки другую, тут действительно непонятно, что хотят. Но компилятор вполне может выдать сообщение, что операция минус для типа стринг не определена. А уж как полезно было бы использовать операторы сравнения |
Сообщ.
#14
,
|
|
|
Цитата Lamer George @ Потому что я не понимаю, что значит "сложить два объекта". я думаю если это не имеет смысла - то программист и не будет этого писать. Ну а если программер неадекватный... Добавлено Цитата Lamer George @ Складывать мусорные баки и вентиляторы нельзя. кстати а почему так? ведь это несоотвецтвие типов и такое принципиально невозможно (разве что программист захочет этого специально - наследует мусорный бак от вентилятора... ) складываюца вентиляторы и вентиляторы, мусорные баки с мусорными баками соответственно. |
Сообщ.
#15
,
|
|
|
Продолжая аналогию с вентиляторами. Вот вам и неоднозначность при сложении двух вентиляторов:
Программист 1 думает, что он получит двухсторонний вентилятор. Программист 2 думает, что он получит вентилятор удвоенных размеров. Программист 3 думает, что он получит вентилятор с удвоенным количеством лопастей. |