|
|
|
overriding Vs overloading
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, я вас понял, интересный взгляд) статичность здесь причем потому, что она позволяет создать такую ситуацию. Как я понимаю по-иному эту ситуацию и не получить. Поправьте если что Basil A. Sidorovтип, который не совместим по присваиванию с типом скрываемого метода Что скажете насчёт: Код: java 1. 2. 3. 4. 5. 6. 7. авторjava: m(java.lang.Number) in inheritanceTest.B cannot override m(java.lang.Number) in inheritanceTest.A return type long is not compatible with int ------------------------------------------------- Код: java 1. 2. 3. 4. 5. 6. 7. авторjava: m(java.lang.Number) in inheritanceTest.B cannot override m(java.lang.Number) in inheritanceTest.A return type long is not compatible with int ------------------------------ Код: java 1. 2. 3. 4. 5. 6. 7. 8. авторMain.java:20: error: m(Number) in B cannot override m(Number) in A public static int m(Number n){System.out.println("Number B");return 1;}; ^ return type int is not compatible with Integer ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2014, 20:04 |
|
||
|
overriding Vs overloading
|
|||
|---|---|---|---|
|
#18+
Могу только повторить - компилятор не может перекрыть метод из-за несовместимых по присваиванию типов возвращаемых результатов. То, что таблица статических методов существует только на этапе компиляции, никак не меняет ситуацию с нарушением интерфейса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2014, 20:20 |
|
||
|
overriding Vs overloading
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, ну тогда напрашивается очевидный вопрос - что такое совместимость по присваиванию? Код: java 1. 2. 3. - ведь работает.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2014, 20:24 |
|
||
|
overriding Vs overloading
|
|||
|---|---|---|---|
|
#18+
redwhite90ну тогда напрашивается очевидный вопрос - что такое совместимость по присваиваниюЯ был неточен, а вы - невнимательны. Сокрытие может произойти только при наследовании, поэтому не "по присваиванию", а "по наследованию" - те самые ковариантные тип. У примитивов нет иерархии наследования и тип должны совпадать в точности. P.S. Я ведь не зря именно такой пример привёл: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2014, 20:46 |
|
||
|
overriding Vs overloading
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, Basil A. Sidorovне "по присваиванию", а "по наследованию" о том и речь. а какая связь с примером то? Компилируя в уме полагаю, что в случае НЕ статик. трижды выведено class B в случае статик class A class B class A вот слово ковариантность меня всегда пугала...когда-то я думал, что это аналог слова "приводимость" Но как оказалось нет и вообще по отношению к java не уверен, что стоит его понимать. Если оно только для override/hide методов используется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2014, 21:08 |
|
||
|
overriding Vs overloading
|
|||
|---|---|---|---|
|
#18+
redwhite90а какая связь с примером то?В (вашем) примере придирка к слову override - вы считаете, что должно быть hide. Я считаю, что компилятор совершенно законно использует override, т.к. имеет место быть попытка перегрузки интерфейса класса. Попытка, нарушающая правила наследования. P.S. А компилируете вы правильно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2014, 21:14 |
|
||
|
overriding Vs overloading
|
|||
|---|---|---|---|
|
#18+
redwhite90вот слово ковариантность меня всегда пугала...когда-то я думал, что это аналог слова "приводимость" Но как оказалось нетВы как-то пугаете способностью делать странные выводы из верных предпосылок ... С чего вдруг "нет"??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2014, 21:16 |
|
||
|
overriding Vs overloading
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, Basil A. SidorovС чего вдруг "нет"??? потому, что int приводим к long но не ковариантен ему! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2014, 21:25 |
|
||
|
overriding Vs overloading
|
|||
|---|---|---|---|
|
#18+
redwhite90потому, что int приводим к long но не ковариантен ему!Вы продолжаете пугать. Ковариантность относится исключительно к объектам. Только у них есть иерархия наследования. Примитивы не являются объектами. У них нет иерархии наследования. К ним не относится понятие ковариантности. Хотите рассматривать числовые объекты - выбирайте правильное дерево . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2014, 21:39 |
|
||
|
overriding Vs overloading
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, приводимость бывает для объектов и для примитивов ---для объектов она называется ковариантность ---для примитов хрен знает как она называется следовательно приводимость =! ковариантность ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2014, 21:47 |
|
||
|
overriding Vs overloading
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, Basil A. SidorovВ (вашем) примере придирка к слову override - вы считаете, что должно быть hide. Я считаю, что компилятор совершенно законно использует override, т.к. имеет место быть попытка перегрузки интерфейса класса. Попытка, нарушающая правила наследования для override и hide даже правила вместе написаны. Так и называется раздел - правила для override and hide. Ну я думаю, что тут уже наш спор себя исчерпал) хотелось бы услышать третью сторону ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2014, 21:51 |
|
||
|
overriding Vs overloading
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, авторНу я думаю, что тут уже наш спор себя исчерпал имеется ввиду по поводу overide/hide только ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2014, 22:01 |
|
||
|
overriding Vs overloading
|
|||
|---|---|---|---|
|
#18+
redwhite90приводимость бывает для объектов и для примитивов ---для объектов она называется ковариантность ---для примитов хрен знает как она называется следовательно приводимость =! ковариантностьВнимательно посмотрите на вторую и последнюю строки. Осознайте, что вы противоречите сами себе. Правила совместимости по присваиванию для примитивов определяет язык, для объектов - иерархия наследования. Так что в контексте объектов "совместимость по присваиванию", она же "приводимость", она же "ковариантность" - эквивалентны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2014, 22:18 |
|
||
|
overriding Vs overloading
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, Basil A. SidorovТак что в контексте объектов "совместимость по присваиванию", она же "приводимость", она же "ковариантность" - эквивалентны. только в контексте объектов! для меня равенство это величина абсолютная во всех контекстах то же самое сказать, что Object == String. String это Object, НО наоборот неверно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2014, 22:30 |
|
||
|
overriding Vs overloading
|
|||
|---|---|---|---|
|
#18+
redwhite90только в контексте объектов! для меня равенство это величина абсолютная во всех контекстахГде, пусть даже "только в контексте объектов" вы усмотрели "равенство" применительно к терминам "приводимость (по иерархии наследования)", "совместимость (по присваиванию)", "ковариантность (объектных типов)"??? Все три термина оперируют с ориентированным ацикличным графом (иерархией наследования). Коммутативность (арифметической) операции сравнения на таком графе не выполняется. Вы уж, как-то, умерьте осетра категоричности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2014, 23:37 |
|
||
|
overriding Vs overloading
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, вы сначала сами сказали, что ВыТак что в контексте объектов "совместимость по присваиванию", она же "приводимость", она же "ковариантность" - эквивалентны. потом я ответил: автортолько в контексте объектов! потом Вы: Basil A. SidorovГде, пусть даже "только в контексте объектов" вы усмотрели "равенство" применительно к терминам "приводимость (по иерархии наследования)", "совместимость (по присваиванию)", "ковариантность (объектных типов)"??? как так то? я лишь сказал, что яприводимость =! ковариантность ну то же самое если вас спросят List и LinkedList это одно и то же что вы ответите ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2014, 23:53 |
|
||
|
overriding Vs overloading
|
|||
|---|---|---|---|
|
#18+
redwhite90ну то же самое если вас спросят List и LinkedList это одно и то же что вы ответите ?А вы не смешивайте "приводимость" и "равенство". byte приводим к int, но не равен ему. При этом int не приводим к byte, т.к. для неявных преобразований типов вводится запрет на (возможную) потерю данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2014, 10:48 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38638149&tid=2127200]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
156ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 465ms |

| 0 / 0 |
